r语言 - R_List from a selected rows of matrix



我有一个矩阵,我想创建一个列表,其中该矩阵的选定行是列表元素。

例如,这是我的矩阵

my.matrix=matrix(1:100, nrow=20)

我想从这个矩阵中创建一个列表,这样列表中的每个元素都是矩阵的一部分,每个部分的行索引由定义

my.n=c(1,2,4,3,5,5)

其中CCD_ 1给出了应当从CCD_。CCD_ 3表示第1行;my.n[2]=2表示第2,3行;my.n[3]=4表示第4行至第7行,依此类推

所以我的列表的第一个元素应该是

my.matrix[1,]

第二

my.matrix[2:3,]

等等

如何以优雅的方式做到这一点?

不太确定,但我想你想要这样的东西。。。

S <- split(seq_len(nrow(my.matrix)), rep.int(seq_along(my.n), my.n))
lapply(S, function(x) my.matrix[x, , drop = FALSE])

在这里,我们通过复制my.n来分割my.matrix的行号。然后,我们在结果列表S上使用lapply()来用这些行号子集my.n0。

end <- cumsum(my.n)
start <- c(1,(end+1)[-length(end)])
mapply(function(a,b) my.matrix[a:b,,drop=F], start, end)

mapply从两个向量中获取第一个自变量,并将它们应用于一个函数。它继续移动到每个向量的第二个元素,并在每个向量中继续。此行为适用于此应用程序,以创建所述的子集列表。感谢@nongkron的mapply方法。

最新更新