将 Sage List of list of list 转换为 R list of list of list
Convert Sage List of list of list to R list of list of list
我有一个 sage list of list of list,它是对 list of list 的 R list 应用某些函数的结果(转换为 sage 格式)
代码如下:
%r
my_r_list<-load("my_r_list.RData")
for d in range(D):
for s in range(S):
for c in range(C):
my_sage_list[d][s][c] = ("my_r_list")[[d+1]][[s+1]][[c+1]]._sage_()
output_my_sage_list[d][s][c] = some_function(my_sage_list[d][s][c])
我想将 output_my_sage_list
转换回 R 列表,以便将其保存到 .RData
文件中
有关 Sage 与 R 接口的文档主要是关于从 R 到 Sage,而不是相反。This question 涉及使用 r.matrix()' so i tried using 'r.list()' but with no luck. I also tried the simple
output_my_r_list 将 sagemath 矩阵转换为 R 矩阵= r(output_my_sage_list)which gives no error but the output is not correct as doing
output_my_r_list[0][0]` 不给出列表的最后一级,而是直接给出一些值。
可重现的代码(绕过 R 到 Sage 部分)将是:
output_d = [[] for _ in range(9)]
for d in range(9):
output_s = [[] for _ in range(4)]
output_d[d] = output_s
for s in range(4):
output_c = [[] for _ in range(2)]
output_s[s] = output_c
for k in range(2):
res = random()
output_c[k] = res
我想将 output_d
转换为 R 列表
这里的关键是你的陈述
I also tried the simple output_my_r_list = r(output_my_sage_list)
which gives no error but the output is not correct as doing output_my_r_list[0][0]
doesn't give the last level of list but directly some values.
Sage 实际上记录了它将使列表只是一个串联列表,或者更恰当地说是一个 R vector:
sage: x = r([10.4,5.6,3.1,6.4,21.7]); x
[1] 10.4 5.6 3.1 6.4 21.7
The following assignment creates a vector $y$ with 11 entries which
consists of two copies of $x$ with a 0 in between::
sage: y = r([x,0,x]); y
[1] 10.4 5.6 3.1 6.4 21.7 0.0 10.4 5.6 3.1 6.4 21.7
这是直接 modeled upon R usage,而且大概(通过一些嵌套过程)甚至来自它:
The further assignment
> y <- c(x, 0, x)
would create a vector y with 11 entries consisting of two copies of
with a zero in the middle place.
所以你的牛肉不完全是 Sage,而是 R,因为(不知何故)Sage 在这里得到了 'right' 东西。 Sage 这样做是因为 here 它说
def _left_list_delim(self):
return "c("
然后 R 行为如下,因为这是递归完成的,它构成了向量的向量。
解决这个问题的方法是 return "list("
那里。另一个 hack 是尝试使用 r.eval("list(something)")
但我并没有成功。
当然,如果能找到一种更容易处理这个问题的方法,并且在 Sage attempts to take nested R stuff and keep it nested 的 return 方向(成功率如何,我不知道),那就太好了。
我有一个 sage list of list of list,它是对 list of list 的 R list 应用某些函数的结果(转换为 sage 格式)
代码如下:
%r
my_r_list<-load("my_r_list.RData")
for d in range(D):
for s in range(S):
for c in range(C):
my_sage_list[d][s][c] = ("my_r_list")[[d+1]][[s+1]][[c+1]]._sage_()
output_my_sage_list[d][s][c] = some_function(my_sage_list[d][s][c])
我想将 output_my_sage_list
转换回 R 列表,以便将其保存到 .RData
文件中
有关 Sage 与 R 接口的文档主要是关于从 R 到 Sage,而不是相反。This question 涉及使用 r.matrix()' so i tried using 'r.list()' but with no luck. I also tried the simple
output_my_r_list 将 sagemath 矩阵转换为 R 矩阵= r(output_my_sage_list)which gives no error but the output is not correct as doing
output_my_r_list[0][0]` 不给出列表的最后一级,而是直接给出一些值。
可重现的代码(绕过 R 到 Sage 部分)将是:
output_d = [[] for _ in range(9)]
for d in range(9):
output_s = [[] for _ in range(4)]
output_d[d] = output_s
for s in range(4):
output_c = [[] for _ in range(2)]
output_s[s] = output_c
for k in range(2):
res = random()
output_c[k] = res
我想将 output_d
转换为 R 列表
这里的关键是你的陈述
I also tried the simple
output_my_r_list = r(output_my_sage_list)
which gives no error but the output is not correct as doingoutput_my_r_list[0][0]
doesn't give the last level of list but directly some values.
Sage 实际上记录了它将使列表只是一个串联列表,或者更恰当地说是一个 R vector:
sage: x = r([10.4,5.6,3.1,6.4,21.7]); x
[1] 10.4 5.6 3.1 6.4 21.7
The following assignment creates a vector $y$ with 11 entries which
consists of two copies of $x$ with a 0 in between::
sage: y = r([x,0,x]); y
[1] 10.4 5.6 3.1 6.4 21.7 0.0 10.4 5.6 3.1 6.4 21.7
这是直接 modeled upon R usage,而且大概(通过一些嵌套过程)甚至来自它:
The further assignment
> y <- c(x, 0, x)
would create a vector y with 11 entries consisting of two copies of
with a zero in the middle place.
所以你的牛肉不完全是 Sage,而是 R,因为(不知何故)Sage 在这里得到了 'right' 东西。 Sage 这样做是因为 here 它说
def _left_list_delim(self):
return "c("
然后 R 行为如下,因为这是递归完成的,它构成了向量的向量。
解决这个问题的方法是 return "list("
那里。另一个 hack 是尝试使用 r.eval("list(something)")
但我并没有成功。
当然,如果能找到一种更容易处理这个问题的方法,并且在 Sage attempts to take nested R stuff and keep it nested 的 return 方向(成功率如何,我不知道),那就太好了。