来自矩阵的选定行的 R_List

标签 r list matrix

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

例如,这是我的矩阵

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

我想从这个矩阵创建一个列表,这样这个列表的每个元素都是矩阵的一部分,每个部分的行索引由
my.n=c(1,2,4,3,5,5)

哪里my.n给出应该从 my.matrix 中提取的行数. my.n[1]=1表示第 1 行; my.n[2]=2表示第 2,3 行; my.n[3]=4表示第 4 行到第 7 行,依此类推。

所以我列表的第一个元素应该是
my.matrix[1,]

第二
my.matrix[2:3,]

等等。

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

最佳答案

end <- cumsum(my.n)
start <- c(1,(end+1)[-length(end)])
mapply(function(a,b) my.matrix[a:b,,drop=F], start, end)
mapply从两个向量中获取第一个参数并将它们应用于函数。它移动到每个向量的第二个元素并继续通过每个向量。此行为适用于此应用程序以创建描述的子集列表。归功于@nongkrong mapply方法。

关于来自矩阵的选定行的 R_List,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31838418/

相关文章:

r - 如何在 R 中创建线性模型列表?

r - 为什么 ORDER 只返回第一行

c++ - 删除 std :list<User_Define> that satisfy certain conditions? 中元素的最佳方法是什么

c# 如何在 foreach 中访问由 int 和 string 组成的对象列表的元素

c - 我们如何在网格中找到两条权重最大的路线?

r - 控制ggplot2中水平线的颜色

根据另一个数据框中的行顺序对一个数据框中的行进行重新排序

Python 用户定义排序

matlab - Matlab中矩阵在空间中的旋转会导致移动而不是旋转到放置位置

r - 从较小的矩阵创建一个更大的矩阵