R 从矩阵中创建一个列表
我有完全相反的问题 我基本上有一个矩阵,并希望从中创建一个列表,这样每行有一个元素,每一个单元格有一个子元素 元素的名称应为行名称 与上述问题相反,从一个矩阵开始,如:R 从矩阵中创建一个列表,r,list,matrix,R,List,Matrix,我有完全相反的问题 我基本上有一个矩阵,并希望从中创建一个列表,这样每行有一个元素,每一个单元格有一个子元素 元素的名称应为行名称 与上述问题相反,从一个矩阵开始,如: [,1] [,2] [,3] [,4] [,5] [,6] [1,] 1 1 2 3 4 5 [2,] 2 1 2 3 4 5 [3,] 3 1 2 3 4 5 [4,] 4 1 2
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 1 2 3 4 5
[2,] 2 1 2 3 4 5
[3,] 3 1 2 3 4 5
[4,] 4 1 2 3 4 5
[5,] 5 1 2 3 4 5
[6,] 6 1 2 3 4 5
[7,] 7 1 2 3 4 5
[8,] 8 1 2 3 4 5
[9,] 9 1 2 3 4 5
[10,] 10 1 2 3 4 5
我想获得如下列表:
[[1]]
[1] 1 1 2 3 4 5
[[2]]
[1] 2 1 2 3 4 5
[[3]]
[1] 3 1 2 3 4 5
[[4]]
[1] 4 1 2 3 4 5
[[5]]
[1] 5 1 2 3 4 5
[[6]]
[1] 6 1 2 3 4 5
[[7]]
[1] 7 1 2 3 4 5
[[8]]
[1] 8 1 2 3 4 5
[[9]]
[1] 9 1 2 3 4 5
[[10]]
[1] 10 1 2 3 4 5
R的最新版本有一个只用于此任务的函数(按行或列拆分):
m我们可以基于矩阵的行
进行拆分
split(mat, row(mat))
#$`1`
#[1] 1 1 2 3 4 5
#$`2`
#[1] 2 1 2 3 4 5
#$`3`
#[1] 3 1 2 3 4 5
#$`4`
#[1] 4 1 2 3 4 5
#...
数据
mat <- matrix(c(1:10, rep(1:5, each = 10)), ncol = 6)
谢谢!是asplit
还是split
?@DaniCee你可以随时尝试。是的,就是这样!如果你不介意的话,请回答下面的问题。。。例如,我如何重命名列表中每个元素的子元素,使它们被命名为c('v1','v2','v3','v4','v5','v6')
,setNames(split(mat,row(mat)),paste0(“v',1:nrow(mat))
@DaniCee ohh.。如果您指的是每个列表中的元素,我想您需要通过lappy(split(mat,row(mat))再次手动分配它们),函数(x)集合名(x,粘贴0(“v”,沿(x)顺序排列))
mat <- matrix(c(1:10, rep(1:5, each = 10)), ncol = 6)