2015-10-09 4 views
0

Скажем, у меня есть список векторов разной длины, таких как:Как хранить векторы с разной длиной в матрицу в R?

listToMatrix <- list(c(1,2,3,4),c(2,15,6),c(9,1,4,6,2,5)) 

Вопрос заключается в том, как я могу поместить этот список в матрицу (это нормально, чтобы оставить пробелы как нули), потому что я хочу векторизовать вычисление позже.

+1

Вы можете vectorisations по спискам, это не является причиной для хранения данных в формате матрицы (и, судя по этому описанию, вы, вероятно, следует * не * хранить его матрица формата). –

+0

, что @KonradRudolph сказал, но 'length <-' - хорошая функция, о которой стоит знать,' do.call (cbind, lapply (listToMatrix, \ 'length <- \', max (lengths (listToMatrix)))) ' – jenesaisquoi

+0

По векторизации я имею в виду простые вычисления матричной алгебры вместо использования apply/sapply/mapply на моем наборе данных. –

ответ

0

Мы могли бы использовать stri_list2matrix от library(stringi). Мы преобразуем вывод в numeric и изменим размерность как выходную матрицу ('m1').

library(stringi) 
m1 <- stri_list2matrix(listToMatrix, byrow=TRUE, fill=0) 
`dim<-`(as.numeric(m1), dim(m1)) 
#  [,1] [,2] [,3] [,4] [,5] [,6] 
# [1,] 1 2 3 4 0 0 
# [2,] 2 15 6 0 0 0 
# [3,] 9 1 4 6 2 5 
Смежные вопросы