将矩阵转换为列表

时间:2010-03-18 15:45:59

标签: list r matrix

假设我有一个矩阵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 个答案:

答案 0 :(得分:16)

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

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

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

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

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

答案 1 :(得分:6)

library(plyr)
alply(foo, 1)