【问题标题】:converting a matrix to a list将矩阵转换为列表
【发布时间】:2011-01-29 02:17:47
【问题描述】:

假设我有一个矩阵foo 如下:

foo <- cbind(c(1,2,3), c(15,16,17))

> foo
     [,1] [,2]
[1,]    1   15
[2,]    2   16
[3,]    3   17

我想把它变成一个看起来像这样的列表

[[1]]
[1]  1 15

[[2]]
[1]  2 16

[[3]]
[1]  3 17

你可以这样做:

lapply(apply(foo, 1, function(x) list(c(x[1], x[2]))), function(y) unlist(y))

我对不那么复杂的替代方法感兴趣。请注意,如果您只是执行apply(foo, 1, function(x) list(c(x[1], x[2]))),它会在列表中返回一个列表,我希望避免这种情况。

【问题讨论】:

    标签: list r matrix


    【解决方案1】:

    这是一个更清洁的解决方案:

    as.list(data.frame(t(foo)))
    

    这利用了数据框实际上只是一个等长向量列表的事实(而矩阵实际上是一个以列和行显示的向量...您可以通过调用 foo[5] 来查看这一点,例如)。

    你也可以这样做,虽然没有太大的改进:

    lapply(1:nrow(foo), function(i) foo[i,])
    

    【讨论】:

    • 您的as.list() 方法非常完美。而且也比我的方法快得多(0.847 s v. 2.45 s)。
    【解决方案2】:
    library(plyr)
    alply(foo, 1)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-27
      • 2014-05-07
      • 2017-05-17
      相关资源
      最近更新 更多