我试图通过向量中的唯一值将矩阵拆分为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]
的矩阵,依此类推。
答案 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