"Recursive indexing failed at level 4"R代码
"Recursive indexing failed at level 4" R code
我有一个名为 PDay 的列表,其中包含 3 个子列表。每个子列表包含 6 个数据框。
为了打印每个数据帧( PDay[[1]][[1]], PDay[[1]][[2]] , ...),我编写了以下代码:
A<-seq_len(3)
B<-seq_len(6)
F1<-function(x,y){
PDay[[y]][[x]]
}
c(outer(B,A,F1))
这是我的错误:
"Recursive indexing failed at level 4"
我的代码有什么问题?我该如何更正它?
谢谢
编辑:请不要嵌套循环。只是 outer() 函数。
为什么不只是:
print(PDay)
或者如果目标是使用不同的函数,你可以双lapply:
lapply(PDay, function(x) lapply(x, print))
为了 outer
成功,需要有一个至少在 x 中向量化的函数。 “[[”函数不能用于传递矢量化结果。此方法已在您指定的较小示例上进行了测试,但应该足够通用:
F1<-function(x,y){
print( PDay[[y]][[x]] )
}
VF1 <- Vectorize(F1)
outer(B,A,VF1)
当你 运行 它时,你会注意到你首先看到数据帧的打印结果,然后是列表矩阵。如果你想抑制矩阵结果,你可以将它分配给一个名称作为调用 outer 的一部分(仅使用 VF1 函数来打印副作用)然后 rm(the_name)
.
junk_name=outer(B,A,VF1)
rm(junk_name)
另一种在获得打印副作用的同时抑制 outer
输出的方法是使用 invisible
函数:
invisible( outer(B,A,VF1) )
我有一个名为 PDay 的列表,其中包含 3 个子列表。每个子列表包含 6 个数据框。 为了打印每个数据帧( PDay[[1]][[1]], PDay[[1]][[2]] , ...),我编写了以下代码:
A<-seq_len(3)
B<-seq_len(6)
F1<-function(x,y){
PDay[[y]][[x]]
}
c(outer(B,A,F1))
这是我的错误: "Recursive indexing failed at level 4"
我的代码有什么问题?我该如何更正它?
谢谢
编辑:请不要嵌套循环。只是 outer() 函数。
为什么不只是:
print(PDay)
或者如果目标是使用不同的函数,你可以双lapply:
lapply(PDay, function(x) lapply(x, print))
为了 outer
成功,需要有一个至少在 x 中向量化的函数。 “[[”函数不能用于传递矢量化结果。此方法已在您指定的较小示例上进行了测试,但应该足够通用:
F1<-function(x,y){
print( PDay[[y]][[x]] )
}
VF1 <- Vectorize(F1)
outer(B,A,VF1)
当你 运行 它时,你会注意到你首先看到数据帧的打印结果,然后是列表矩阵。如果你想抑制矩阵结果,你可以将它分配给一个名称作为调用 outer 的一部分(仅使用 VF1 函数来打印副作用)然后 rm(the_name)
.
junk_name=outer(B,A,VF1)
rm(junk_name)
另一种在获得打印副作用的同时抑制 outer
输出的方法是使用 invisible
函数:
invisible( outer(B,A,VF1) )