假设我们有五个list对象:
# create the lists
for (i in 1:5) {
assign(paste0('my_list', i), list(first = NA, second = NA))
}
# then, we have my_list1 - my_list5
> ls()
[1] "i" "my_list1" "my_list2" "my_list3" "my_list4" "my_list5"
这里,我想给每个列表的“第一个”赋值一个列表。也就是说,我想做的是
my_list1$first <- list(hello = c(1, 2, 3), world = c(1, 2, 3, 4))
my_list2$first <- list(hello = c(1, 2, 3), world = c(1, 2, 3, 4))
my_list3$first <- list(hello = c(1, 2, 3), world = c(1, 2, 3, 4))
my_list4$first <- list(hello = c(1, 2, 3), world = c(1, 2, 3, 4))
my_list5$first <- list(hello = c(1, 2, 3), world = c(1, 2, 3, 4))
我想下面的代码可以工作:
for (i in 1:5) {
assign(paste0('my_list', i, '[[1]]'), list(hello = c(1, 2, 3), world = c(1, 2, 3, 4)))
}
但是,您知道,该命令只是创建名为my_list1[[1]]
、my_list1[[1]]
等的其他列表:
> ls()
[1] "i" "my_list1" "my_list1[[1]]" "my_list2" "my_list2[[1]]" "my_list3" "my_list3[[1]]" "my_list4"
[9] "my_list4[[1]]" "my_list5" "my_list5[[1]]"
那么,我怎样才能用loop完成我想要的工作呢?
2条答案
按热度按时间3pvhb19x1#
这些列表可以通过名称从
.GlobalEnv
访问:但是最好将所有这些
my_list*
保存在一个列表中,这样以后就可以轻松地操作它们。o2g1uqev2#
您可以
get()
每个列表,操作它,然后重新-assign()
:也就是说,将列表存储在上级列表中而不是全局环境中会使它们更容易使用:
一个二个一个一个