我有一个名为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))
这是我的错误: “递归索引在第4级失败”
我的代码有什么问题?我该如何纠正?
谢谢
编辑:请不要嵌套循环。只是external()函数。
答案 0 :(得分:0)
为什么不只是:
print(PDay)
或者,如果目标是使用其他功能,则可以两次套用:
lapply(PDay, function(x) lapply(x, print))
答案 1 :(得分:0)
为了使outer
成功,一个函数必须具有至少在x中向量化的函数。 “ [[”函数不能用于传递矢量化结果。此方法已在您指定的较小示例上进行了测试,但应足够通用:
F1<-function(x,y){
print( PDay[[y]][[x]] )
}
VF1 <- Vectorize(F1)
outer(B,A,VF1)
运行它时,您会注意到首先看到的是数据框的打印结果,然后是列表矩阵。如果希望抑制矩阵结果,则可以将其分配给一个名称,作为对外部调用的一部分(仅出于打印副作用使用VF1函数),然后单击rm(the_name)
。
junk_name=outer(B,A,VF1)
rm(junk_name)
在获得打印副作用的同时抑制outer
输出的另一种方法是使用invisible
函数:
invisible( outer(B,A,VF1) )