R 复制列表以创建列表列表列表

R 复制列表以创建列表列表列表,r,list,nested-lists,R,List,Nested Lists,我正在尝试创建具有以下(嵌套)结构的列表: l <- list() for(i in seq(5)) l[[i]] <- list(a=NA,b=NA) > str(l) List of 5 $ :List of 2 ..$ a: logi NA ..$ b: logi NA $ :List of 2 ..$ a: logi NA ..$ b: logi NA $ :List of 2 ..$ a: logi NA ..$ b: logi NA

我正在尝试创建具有以下(嵌套)结构的列表:

l <- list()
for(i in seq(5)) l[[i]] <- list(a=NA,b=NA)
> str(l)
List of 5
 $ :List of 2
  ..$ a: logi NA
  ..$ b: logi NA
 $ :List of 2
  ..$ a: logi NA
  ..$ b: logi NA
 $ :List of 2
  ..$ a: logi NA
  ..$ b: logi NA
 $ :List of 2
  ..$ a: logi NA
  ..$ b: logi NA
 $ :List of 2
  ..$ a: logi NA
  ..$ b: logi NA
返回:

> str(rep(fred, 5))
List of 10
 $ happy: int [1:10] 1 2 3 4 5 6 7 8 9 10
 $ name : chr "squash"
 $ happy: int [1:10] 1 2 3 4 5 6 7 8 9 10
 $ name : chr "squash"
 $ happy: int [1:10] 1 2 3 4 5 6 7 8 9 10
 $ name : chr "squash"
 $ happy: int [1:10] 1 2 3 4 5 6 7 8 9 10
 $ name : chr "squash"
 $ happy: int [1:10] 1 2 3 4 5 6 7 8 9 10
 $ name : chr "squash"
换句话说,它使列表变得平坦

我还尝试了
list(rep(fred,5))
,但同样失败


如何复制列表列表?

我认为这与rep行为有关,您希望在rep之前嵌套:

rep(list(fred),5)
str
输出:

List of 5
 $ :List of 2
  ..$ happy: int [1:10] 1 2 3 4 5 6 7 8 9 10
  ..$ name : chr "squash"
 $ :List of 2
  ..$ happy: int [1:10] 1 2 3 4 5 6 7 8 9 10
  ..$ name : chr "squash"
 $ :List of 2
  ..$ happy: int [1:10] 1 2 3 4 5 6 7 8 9 10
  ..$ name : chr "squash"
 $ :List of 2
  ..$ happy: int [1:10] 1 2 3 4 5 6 7 8 9 10
  ..$ name : chr "squash"
 $ :List of 2
  ..$ happy: int [1:10] 1 2 3 4 5 6 7 8 9 10
  ..$ name : chr "squash"

您可以使用
复制

l <- replicate(5, list(a=NA,b=NA), simplify=FALSE)

l这是我一个人干的还是非常不直观?感谢您的解决方案。@AriB.Friedman——如果您比较
rep(1:2,5)
rep(list(1:2,5)
,并且记住列表实际上是一种向量,那么这可能更有意义。这有用吗?@JoshO'Brien是的,确实有用。你知道一种复制现有对象结构的方法吗?例如,我有一个包含多个嵌套级别的列表,我希望使用空版本来存储结果,每个嵌套元素使用相同的名称。也许有一种方法可以删除整个对象中的所有数据,只留下结构及其元素名?
l <- replicate(5, list(a=NA,b=NA), simplify=FALSE)