x <- list()
x[1] <- 1
x[2] <- 1:10
列表可以包含任何类型的数据结构,为什么我会收到警告消息?
In x[2] <- 1:10 :
number of items to replace is not a multiple of replacement length
答案 0 :(得分:3)
您必须使用双括号来访问列表的元素:
x[[1]] <- 1
x[[2]] <- 1:10
x[2]
不是列表x
的成员,而是另一个列表
> x[2]
[[1]]
[1] 1 2 3 4 5 6 7 8 9 10
答案 1 :(得分:0)
发生错误是因为您尝试使用长度为10的向量替换一个NULL列表元素。
> x <- list()
> x[2] <- 1:10 ## error, but x[2] <- list(1:10) works
## interestingly, you did replace the first value
> x[[2]]
## [1] 1
有时可以避免使用双括号,例如,如果您一次填充所有空的list
元素,则使用索引向量(例如x[1:2]
)进行操作。
> x <- vector('list', 2)
> x[1:2] <- list(1, 1:10)
> x
# [[1]]
# [1] 1
# [[2]]
# [1] 1 2 3 4 5 6 7 8 9 10
第二个元素可以用单括号访问
> x[2]
# [[1]]
# [1] 1 2 3 4 5 6 7 8 9 10