"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) )