假设我有一个矩阵foo如下:
foo <- cbind(c(1,2,3), c(15,16,17))
> foo
[,1] [,2]
[1,] 1 15
[2,] 2 16
[3,] 3 17
Run Code Online (Sandbox Code Playgroud)
我想把它变成一个看起来像的列表
[[1]]
[1] 1 15
[[2]]
[1] 2 16
[[3]]
[1] 3 17
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
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]))),它会在列表中返回一个列表,我希望避免这样做.
Sha*_*ane 17
这是一个更清洁的解决方案:
as.list(data.frame(t(foo)))
Run Code Online (Sandbox Code Playgroud)
这利用了这样一个事实:数据帧实际上只是一个等长矢量列表(而矩阵实际上是一个用列和行显示的矢量......你可以通过调用foo [5]来看到这一点,例如).
您也可以这样做,虽然它没有太大的改进:
lapply(1:nrow(foo), function(i) foo[i,])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12705 次 |
| 最近记录: |