我有以下列表,我想将其转换为矩阵 M:
L<-list(c(2L, 29L, 30L), c(1L, 3L, 30L, 31L), c(2L, 31L, 32L), c(5L,
60L), c(4L, 6L, 60L, 61L), c(5L, 7L, 61L, 62L))
[[1]]
[1] 2 29 30
[[2]]
[1] 1 3 30 31
[[3]]
[1] 2 31 32
[[4]]
[1] 5 60
[[5]]
[1] 4 6 60 61
[[6]]
[1] 5 7 61 62
Matrix M:
2 29 30 NA
1 3 30 31
2 31 32 NA
5 60 NA NA
4 6 60 61
5 7 61 62
Run Code Online (Sandbox Code Playgroud)
我希望每个列表都是矩阵的一行,并用 NA 填充任何缺失的值。
根据列表元素的长度追加NA到每个元素的末尾,然后使用withlistmaxlength<-rbinddo.call
mx <- max(lengths(L))
do.call(rbind, lapply(L, `length<-`, mx))
Run Code Online (Sandbox Code Playgroud)
-输出
[,1] [,2] [,3] [,4]
[1,] 2 29 30 NA
[2,] 1 3 30 31
[3,] 2 31 32 NA
[4,] 5 60 NA NA
[5,] 4 6 60 61
[6,] 5 7 61 62
Run Code Online (Sandbox Code Playgroud)