我正在尝试将数百个列表合并为一个。无意修改列表的内容,我只是想按顺序组合列表。列表的名称有一些规则,所以我想将for循环与get()和paste0()函数一起使用。但 for 循环只显示了 NULL 值。这是反映我的情况的简单示例。
这些是我要合并的列表。
list_a <- list(1, 2, 3, 4)
list_b <- list('a', 'b', 'c', 'd')
当我直接使用list函数时,我可以成功得到我想要的东西
> list(list_a, list_b)
[[1]]
[[1]][[1]]
[1] 1
[[1]][[2]]
[1] 2
[[1]][[3]]
[1] 3
[[1]][[4]]
[1] 4
[[2]]
[[2]][[1]]
[1] "a"
[[2]][[2]]
[1] "b"
[[2]][[3]]
[1] "c"
[[2]][[4]]
[1] "d"
但是,当我使用 for 循环时,我只能绘制 NULL 值,如下所示
naming <- c("list_a", "list_b")
aa <- list()
result <- for(i in 1:length(naming)){
aa[[i]] <- get(naming[i])
}
> result
NULL
然而,神奇的是,当我刚刚解开for循环时,我就能得到正确的答案。
> list(get(naming[1]), get(naming[2]))
[[1]]
[[1]][[1]]
[1] 1
[[1]][[2]]
[1] 2
[[1]][[3]]
[1] 3
[[1]][[4]]
[1] 4
[[2]]
[[2]][[1]]
[1] "a"
[[2]][[2]]
[1] "b"
[[2]][[3]]
[1] "c"
[[2]][[4]]
[1] "d"
我不知道我的 for 循环不起作用的原因。我尝试在函数中指定全局环境,但它也不起作用,只显示 NULL 结果。
请给我一些解决办法。
此代码对我有用:
result <- list()
for(i in 1:length(naming)) {
result[[i]] <- get(naming[i])
}