【发布时间】:2015-09-25 13:00:58
【问题描述】:
基本上,我想将多个列表合并到一个列表中。所有列表都具有相同的结构。这是一个例子:
file1=list(A=1,B=2)
file2=list(A=2,B=3)
file3=list(A=3,B=4)
我知道mapply() 或Map() 有效。
> mapply(c, file1, file2, file3, SIMPLIFY=FALSE)
[[1]]
[1] 1 2 3
[[2]]
[1] 2 3 4
但问题是我实际上有 500 个列表,嗯,我可以肯定复制和粘贴对象名称 500 次。但是,我想学习如何有效地做到这一点。我有一个包含每个 500 个列表的名称的向量,就像这样,
lsNames=c("file1","file2","file3")
但我不知道如何开始,感谢任何帮助,谢谢。
【问题讨论】:
-
你也可以使用
mget(ls(pattern='file\\d+')) -
为什么这 500 个列表会出现在您的工作区中?从他们的创作开始,他们就应该在一个列表或环境中在一起。
-
@Roland 它们每个都是来自单个模拟的结果,我实际上可以一次运行 500 个模拟然后我会有一个我想要的列表,但是由于硬件限制,我只能运行一个模拟然后清理一些磁盘空间,所以我最终遇到了这种奇怪的情况
-
我还是不明白。如果你运行 500 次模拟,我当然希望你能循环进行。但是我不明白你怎么能在你的工作区中结束 500 个单独的对象,而不是做类似
res <- list(); for (i in seq_len(500) res[[i]] <- yourComputations或(最好)使用replicate、lapply或foreach。 -
如果模拟结果是一个向量或单个值,这会起作用,但我的是一个列表,所以你提供的代码会产生一个嵌套列表,它实际上离我想要的更近了一步,但它是与执行 mget() 相同,但这仍然不是我需要的