如何将列表转换为R中的矩阵

时间:2013-06-12 12:40:17

标签: r vector matrix

我有一个矢量列表,如下所示:

[[1]]
[1]  1  2  7  9 10 13 14 15 20

[[2]]
[1] 3 4 5 6

[[3]]
[1]  8 11 12

[[4]]
[1] 16 17 18 19

[[5]]
[1] 21 22 23

我想将列表转换为矩阵,其中每个向量的内容与双括号中的列表索引号相关联。

示例:

       [,1] [,2]
 [1,]   1    1
 [2,]   1    2
 [3,]   1    7
 [4,]   1    9
 [5,]   1   10
 [6,]   1   13
 [7,]   1   14
 [8,]   1   15
 [9,]   1   20
[10,]   2    3
[11,]   2    4
[12,]   2    5
[13,]   2    6
[14,]   3    8
[15,]   3   11
[16,]   3   12
[17,]   4   16
[18,]   4   17
[19,]   4   18
[20,]   4   19
[21,]   5   21
[22,]   5   22
[23,]   5   23

3 个答案:

答案 0 :(得分:9)

您可以使用unlist获取列表中的值,然后使用sapply获取列表中每个元素的值数。

# Generate the list
a <- list(1:10, 20:30, 40:45)
# Find the number of elements
num.el <- sapply(a, length)
# Generate the matrix
res <- cbind(unlist(a), rep(1:length(a), num.el))

答案 1 :(得分:8)

library(reshape2)

lst <- list(c(1:3), c(11:12), c(22))

> melt(lst)
  value L1
1     1  1
2     2  1
3     3  1
4    11  2
5    12  2
6    22  3

答案 2 :(得分:2)

如果l是您的原始列表:

cbind(rep(seq_along(l), times=sapply(l, length)), unlist(l))