list(list(NULL,NULL),list(NULL,NULL))
結果是:[R如何複製空值在列表
[[1]]
[[1]][[1]]
NULL
[[1]][[2]]
NULL
[[2]]
[[2]][[1]]
NULL
[[2]][[2]]
NULL
假如我想爲更大的數字做比2,有沒有辦法讓與複製相同的目錄結構?
list(list(NULL,NULL),list(NULL,NULL))
結果是:[R如何複製空值在列表
[[1]]
[[1]][[1]]
NULL
[[1]][[2]]
NULL
[[2]]
[[2]][[1]]
NULL
[[2]][[2]]
NULL
假如我想爲更大的數字做比2,有沒有辦法讓與複製相同的目錄結構?
使用replicate
replicate(n=3, {replicate(n=3,NULL,simplify=FALSE)},simplify=FALSE)
[[1]]
[[1]][[1]]
NULL
[[1]][[2]]
NULL
[[1]][[3]]
NULL
[[2]]
[[2]][[1]]
NULL
[[2]][[2]]
NULL
[[2]][[3]]
NULL
[[3]]
[[3]][[1]]
NULL
[[3]][[2]]
NULL
[[3]][[3]]
NULL
或者更simplly(感謝@RichardScriven)
replicate(3, list(replicate(3, list(NULL))))
也許寫一個小功能,讓你可以調整重複,每個列表的長度,也有返回數組或列表的選項。
nest <- function(len = 1L, n = 1L, ...) {
replicate(n, vector("list", len), ...)
}
nest()
nest(2)
nest(2, simplify = FALSE)
nest(3, 2, simplify = FALSE)
可以使用rep
用更少的字母做到這一點:
rep(list(rep(list(NULL), 3)), 3)
[[1]]
[[1]][[1]]
NULL
[[1]][[2]]
NULL
[[1]][[3]]
NULL
[[2]]
[[2]][[1]]
NULL
[[2]][[2]]
NULL
[[2]][[3]]
NULL
[[3]]
[[3]][[1]]
NULL
[[3]][[2]]
NULL
[[3]][[3]]
NULL