我有几个长度不相等的向量,想要将它们 cbind
起来。我把这些向量放进了一个列表中,并尝试使用 do.call(cbind, ...)
来组合它们:
nm <- list(1:8, 3:8, 1:5)
do.call(cbind, nm)
# [,1] [,2] [,3]
# [1,] 1 3 1
# [2,] 2 4 2
# [3,] 3 5 3
# [4,] 4 6 4
# [5,] 5 7 5
# [6,] 6 8 1
# [7,] 7 3 2
# [8,] 8 4 3
# Warning message:
# In (function (..., deparse.level = 1) :
# number of rows of result is not a multiple of vector length (arg 2)
如预期所料,结果矩阵的行数是最长向量的长度,并且较短向量的值会被循环使用来补足长度。
相反,我想用NA
值填充短向量,以获得与最长向量相同的长度。我希望矩阵看起来像这样:
# [,1] [,2] [,3]
# [1,] 1 3 1
# [2,] 2 4 2
# [3,] 3 5 3
# [4,] 4 6 4
# [5,] 5 7 5
# [6,] 6 8 NA
# [7,] 7 NA NA
# [8,] 8 NA NA
我该如何着手做到这一点?