List 将矩阵转换为列表
假设我有一个矩阵List 将矩阵转换为列表,list,r,matrix,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 您可以按如下方式进行操作: foo <- cbind(c(1,2,3), c(15,16,17)) > foo [,1] [,2] [1,] 1 15 [2,] 2 16 [3,] 3 17
foo
,如下所示:
foo <- cbind(c(1,2,3), c(15,16,17))
> foo
[,1] [,2]
[1,] 1 15
[2,] 2 16
[3,] 3 17
您可以按如下方式进行操作:
foo <- cbind(c(1,2,3), c(15,16,17))
> foo
[,1] [,2]
[1,] 1 15
[2,] 2 16
[3,] 3 17
lapply(应用(foo,1,函数(x)列表(c(x[1],x[2])),函数(y)未列表(y))
我对另一种不那么复杂的方法感兴趣。注意,如果您只执行
apply(foo,1,函数(x)list(c(x[1],x[2]))
,它会在列表中返回一个列表,这是我希望避免的。这里有一个更干净的解决方案:
as.list(data.frame(t(foo)))
这充分利用了一个事实,即数据帧实际上只是一个等长向量的列表(而矩阵实际上是一个以列和行显示的向量……例如,您可以通过调用foo[5]看到这一点)
您也可以这样做,尽管这并不是一个很大的改进:
lapply(1:nrow(foo), function(i) foo[i,])
您的as.list()
方法非常完美。而且比我的方法(0.847秒对2.45秒)快得多。
library(plyr)
alply(foo, 1)