代码之家  ›  专栏  ›  技术社区  ›  andrewj

将矩阵转换为列表

  •  9
  • andrewj  · 技术社区  · 16 年前

    假设我有一个矩阵 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])))

    2 回复  |  直到 16 年前
        1
  •  20
  •   Shane    16 年前

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

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

    您也可以这样做,尽管这并没有多大改进:

    lapply(1:nrow(foo), function(i) foo[i,])
    
        2
  •  6
  •   Collin    16 年前
    library(plyr)
    alply(foo, 1)
    
    推荐文章