如何为矩阵中的每一行提取行中前5个元素的索引?

时间:2015-10-24 18:38:23

标签: r matrix

Matrix containing 100 columns and 10000 rows

我希望我的答案格式化为。 包含前5个索引的索引按降序存储在另一个矩阵中:

R1:6, 3, 7, 5, 10
R2:7, 1, 2, 3, 4
R3:3, 1, 2, 4, 5

等等。

1 个答案:

答案 0 :(得分:1)

我们可以使用apply使用MARGIN=1order元素循环遍历行,选择前5个元素并转置矩阵。

t(apply(m1, 1, FUN= function(x) order(-x)[1:5]))
#    [,1] [,2] [,3] [,4] [,5]
#[1,]    6    3    7    5   10
#[2,]    7    1    2    3    4
#[3,]    3    1    2    4    5

注意:这里,我只使用OP提供的前3行图像数据。

数据

m1 <- structure(c(0.001371742, 0.058823529, 0.428571429, 0, 0, 0,
0.10973937, 
0, 0.71428571, 0, 0, 0, 0.04115226, 0, 0, 0.25377229, 0, 0, 0.10013717, 
0.91176471, 0, 0, 0, 0, 0, 0, 0, 0.006858711, 0, 0), 
.Dim = c(3L, 
10L), .Dimnames = list(NULL, c("V1", "V2", "V3", "V4", "V5", 
"V6", "V7", "V8", "V9", "V10")))