У меня есть несколько векторов неравной длины, и я хотел бы 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
Как я могу это сделать?