這似乎是一個容易的(可能是),但由於我是braindead,我已準備好登上恥辱牆。重複列表對象n次
如何複製一個列表對象n
次,然後將其包裝在列表中?事情是這樣的:
list(foo = "", bar = 0)
爲了得到:
list(
list(foo = "", bar = 0),
list(foo = "", bar = 0)
)
注: for循環被認爲是作弊
這似乎是一個容易的(可能是),但由於我是braindead,我已準備好登上恥辱牆。重複列表對象n次
如何複製一個列表對象n
次,然後將其包裝在列表中?事情是這樣的:
list(foo = "", bar = 0)
爲了得到:
list(
list(foo = "", bar = 0),
list(foo = "", bar = 0)
)
好,rep
作品(而且是「矢量」),如果你只是在另一個列表包裹列表...
x <- list(foo = "", bar = 0)
rep(list(x), 2)
這招也可以用於分配給NULL
列表中的一個元素:
x[2] <- list(NULL)
有時一個循環是最簡單的:
x <- list(foo = "", bar = 0)
lx <- vector("list", 2)
for (i in 1:length(lx)) lx[[i]] <- x
如果您需要單個名稱,您可以使用names(lx) <- ...
一次性分配這些名稱,或者以其他方式從空白名單中構建列表併爲其添加索引lx[[i]]
- 效率低於預先分配。
稍微棘手的方式是lapply的長度n
的載體:
lapply(1:2, function(j) x)
只要把虛擬j
每個元素,並返回平凡你的變量(使用約範圍問題的假設)。
也許replicate
?喜歡的東西:
L <- list(foo = "", bar = 0)
W <- replicate(10, L, FALSE)
這裏有一個兩行腳本,你想要做什麼:
el <- list(foo = "", bar = 0)
dups <- list(el)[rep(1,N)]
注意,這將會對任何目標「厄爾尼諾」,不只是一個清單的工作。它使用像向量一樣對列表建立索引的技巧,使用單括號[]符號(和重複索引)。