通过向量将矩阵拆分为矩阵列表

时间:2016-03-11 14:41:48

标签: r matrix vector

我试图通过向量中的唯一值将矩阵拆分为list。向量将具有与矩阵中每列中的值一样多的值。 这是一个例子:

 #matrix
 b <- cbind(c(2,2,1,0), c(2,2,1,5), c(2,2,5,6))
 #vector
 a <- c(5,5,4,1)
 #??
 #my outcome should looks like
 v <- list(cbind(c(2,2), c(2,2), c(2,2)), c(1,1,5), c(0,5,6))

基本上,我想通过向量中的唯一值按行将矩阵拆分为多个矩阵。更具体地说,我的矢量从最高值到最低值排序,我需要将它保存在列表中!正如您在示例中看到的,v[[1]]unique(a)[1]的矩阵,依此类推。

1 个答案:

答案 0 :(得分:2)

lapply(split(seq_along(a), a), #split indices by a
       function(m, ind) m[ind,], m = b)[order(unique(a))]
#$`5`
#     [,1] [,2] [,3]
#[1,]    2    2    2
#[2,]    2    2    2
#
#$`4`
#[1] 1 1 5
#
#$`1`
#[1] 0 5 6