从R中的每列矩阵创建列表

时间:2013-05-10 02:57:28

标签: r

我有一个矩阵M,我想要创建3个列表,每个列表包含矩阵M的行名称,这意味着要检查fisrt列表,我想要m[, 1]$a = 1m[ ,1]$b = 2。如何在R中为每列执行此操作?

    m
      [,1] [,2] [,3]
  a    1    3    5
  b    2    4    6

我试过这段代码,但这不是我想要的结果

  > list(m[, 1])
  [[1]]
   a b 
   1 2

3 个答案:

答案 0 :(得分:5)

这将创建一个列表列表:

apply(M, 2, as.list)

如果您的矩阵有代码名称,那么它们甚至可以用作顶级列表的名称:

M <- matrix(1:6, nrow = 2, dimnames = list(c("a", "b"), c("c1", "c2", "c3")))
apply(M, 2, as.list)
# $c1
# $c1$a
# [1] 1
#
# $c1$b
# [1] 2
#
#
# $c2
# $c2$a
# [1] 3
#
# $c2$b
# [1] 4
#
#
# $c3
# $c3$a
# [1] 5
#
# $c3$b
# [1] 6

答案 1 :(得分:4)

这是命令:

list.m <- as.list(m[,1])

答案 2 :(得分:2)

试试这个:

# input matrix
m <- matrix(1:6, 2, dimnames = list(c("a", "b"), NULL))

# convert it to a list constructed such that L[, 1]$a gives 1
L <- as.list(m)
dim(L) <- dim(m)
dimnames(L) <- dimnames(m)

现在我们有:

> L[, 1]$a
[1] 1