在R中构建嵌套列表

在R中构建嵌套列表,r,list,loops,nested,R,List,Loops,Nested,我写了一个函数,它的输出是一个列表。我想把我的函数放到一个循环中,我想把每次迭代的输出(当然是一个列表)存储到一个更大的列表中。换句话说,这个大列表中的每个元素也是一个列表。c()不符合我的要求。有办法吗 为了更好地理解我所要问的,请考虑下面的例子: iter1 <- list(item1 = 1, item2 = "a") iter2 <- list(item1 = 1, item2 = "b") All <- list(iter1 = iter1, iter2 = iter

我写了一个函数,它的输出是一个列表。我想把我的函数放到一个循环中,我想把每次迭代的输出(当然是一个列表)存储到一个更大的列表中。换句话说,这个大列表中的每个元素也是一个列表。c()不符合我的要求。有办法吗

为了更好地理解我所要问的,请考虑下面的例子:

iter1 <- list(item1 = 1, item2 = "a")
iter2 <- list(item1 = 1, item2 = "b")
All <- list(iter1 = iter1, iter2 = iter2)

iter1还有另一种分配列表的方法,使用
my_list[[name或number]]这将使您获得与您的
All

c(iter1=list(iter1), iter2=list(iter2))

> identical(c(iter1=list(iter1), iter2=list(iter2)), All)
[1] TRUE
假设您想将第三个列表添加到
All

c(All, list(iter3=iter3))

如果你不喜欢名单上的名字,它看起来更干净一些

 c(list(iter1), list(iter2))

我认为@Frank的答案在这里是正确的,但他给出的第一个例子似乎有点奇怪。我想你想这么做

bigLL <- list()
for( i in 1:3 ){

  ll <- list( item1 = i , item2 = letters[i] )
  bigLL[[i]] <- ll

}

bigLL
#[[1]]
#[[1]]$item1
#[1] 1

#[[1]]$item2
#[1] "a"


#[[2]]
#[[2]]$item1
#[1] 2

#[[2]]$item2
#[1] "b"


#[[3]]
#[[3]]$item1
#[1] 3

#[[3]]$item2
#[1] "c"

bigLL这对我很有效,希望能有所帮助

  data = list()

  for(i in 1:3)
  {
    tmp = c(1,2,3)
    data = rbind(data, tmp)
  }

我想你应该在标题中说“嵌套”而不是“连接”…也许还应该提到循环的事情?如果你想要c,你只需要额外调用
list
c(LL,list(l1))
不要在循环中增长对象!!预先分配,然后填充。这不是串联,我已经固定了标题和标签。@SimonO101。谢谢你用我的第一个例子指出这个问题。:)请让我知道编辑的版本是否有问题。+1用于您对备选方案的综合处理
rbind
不适用于列表-它将忽略
数据
作为列表开始的事实。此外,在循环中连续调用
rbind
速度很慢,因为在每个步骤中都必须重新计算
数据。尝试使用
数据[[i]]
c(iter1=list(iter1), iter2=list(iter2))

> identical(c(iter1=list(iter1), iter2=list(iter2)), All)
[1] TRUE
c(All, list(iter3=iter3))
 c(list(iter1), list(iter2))
bigLL <- list()
for( i in 1:3 ){

  ll <- list( item1 = i , item2 = letters[i] )
  bigLL[[i]] <- ll

}

bigLL
#[[1]]
#[[1]]$item1
#[1] 1

#[[1]]$item2
#[1] "a"


#[[2]]
#[[2]]$item1
#[1] 2

#[[2]]$item2
#[1] "b"


#[[3]]
#[[3]]$item1
#[1] 3

#[[3]]$item2
#[1] "c"
  data = list()

  for(i in 1:3)
  {
    tmp = c(1,2,3)
    data = rbind(data, tmp)
  }