如何使用for循环将两个列表组成一个列表(列表的列表)?结果有 NULL 值

问题描述 投票:0回答:1

我正在尝试将数百个列表合并为一个。无意修改列表的内容,我只是想按顺序组合列表。列表的名称有一些规则,所以我想将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 结果。

请给我一些解决办法。

r for-loop null
1个回答
0
投票

此代码对我有用:

result <- list()
for(i in 1:length(naming)) {
    result[[i]] <- get(naming[i])
}
© www.soinside.com 2019 - 2024. All rights reserved.