我有一个矢量或矩阵列表,如下所示:
l <- list(1:3, 4:6)
l
# [[1]]
# [1] 1 2 3
# [[2]]
# [1] 4 5 6
现在我想在列表中添加一个新的矢量/矩阵。使用c()
不是一个好方法,因为新向量的每个项目都将作为单个列表元素添加:
c(l, 7:9)
# [[1]]
# [1] 1 2 3
# [[2]]
# [1] 4 5 6
# [[3]]
# [1] 7
# [[4]]
# [1] 8
# [[5]]
# [1] 9
同样list()
不能正常工作,它会创建一个长度为2的嵌套列表,而不是长度为3的列表:
list(l, 7:9)
# [[1]]
# [[1]][[1]]
# [1] 1 2 3
# [[1]][[2]]
# [1] 4 5 6
# [[2]]
# [1] 7 8 9
这是什么标准解决方案?
答案 0 :(得分:2)
do.call(c, list(l, list(7:9)))
# [[1]]
# [1] 1 2 3
# [[2]]
# [1] 4 5 6
# [[3]]
# [1] 7 8 9
如果它是一个矩阵:
do.call(c, list(l, list(matrix(7:9))))
# [[1]]
# [1] 1 2 3
# [[2]]
# [1] 4 5 6
# [[3]]
# [,1]
# [1,] 7
# [2,] 8
# [3,] 9
如果要添加多个矢量或矩阵,可以将它们全部放在第二个列表中:
do.call(c,list(l, list(matrix(7:9), 6:10)))
# [[1]]
# [1] 1 2 3
# [[2]]
# [1] 4 5 6
# [[3]]
# [,1]
# [1,] 7
# [2,] 8
# [3,] 9
# [[4]]
# [1] 6 7 8 9 10