dane = list(list(),list(),list())
for(n in 1:3){
for(m in 1:6){
dane[[n]][m] =c()
}
}
lengths(dane)
# [1] 5 5 5
Run Code Online (Sandbox Code Playgroud)
为什么结果的子列表长度为 5,而不是 6?
更简单:
x = list()
for(i in 1:3) x[i] = NULL
length(x)
# [1] 2
## why is this 2, not 3?
Run Code Online (Sandbox Code Playgroud)
在循环中,元素实际上被删除,而不是NULL存储在那里。如果尝试删除长度为零的列表中的第 nNULL个元素,则会创建一个包含元素的列表,直到倒数第二个元素。
尝试
x <- list()
length(x)
# [1] 0
x[5] <- NULL
x
# [[1]]
# NULL
#
# [[2]]
# NULL
#
# [[3]]
# NULL
#
# [[4]]
# NULL
Run Code Online (Sandbox Code Playgroud)
在哪里
length(x)
# [1] 4
Run Code Online (Sandbox Code Playgroud)
要使用空列表元素初始化列表,请回想一下,在 R 中列表也是一个向量。
li <- vector(mode='list', length=3L)
li
# [[1]]
# NULL
#
# [[2]]
# NULL
#
# [[3]]
# NULL
Run Code Online (Sandbox Code Playgroud)