r - 按顺序找到向量中前 n 个元素的索引 [R]

标签 r sorting indexing

我有一个数字类型的矩阵,暗淡的 10000 * 50。现在我想按值的顺序在每一行中找到前 5 个元素的索引。例如示例可能如下所示:

set.seed(2)
v1 <- matrix(runif(20 , 0 ,20 ) , 2 ,10)
v1
#          [,1]      [,2]     [,3]     [,4]     [,5]      [,6]      [,7]      [,8]      [,9]    [,10]
#[1,]  3.697645 11.466527 18.87679  2.58318  9.36037 11.053481 15.210266  8.105644 19.527970 8.896185
#[2,] 14.047481  3.361038 18.86950 16.66898 10.99967  4.777895  3.616402 17.070969  4.516509 1.499588

然后我希望输出看起来像:

#[1,]    9    3    7    2    6
#[2,]    3    8    4    1    5

我只能找到 this question ,它解释了如何查找前 n 个元素,但不是按值的顺序。

最佳答案

apply() 非常适合对矩阵进行逐行操作。你可以做

t(apply(v1, 1, function(x) order(-x)[1:5]))
#      [,1] [,2] [,3] [,4] [,5]
# [1,]    9    3    7    2    6
# [2,]    3    8    4    1    5

这会沿矩阵 v1 逐行运行 order() 函数,然后为每个值取前五个值,转置结果,因为您指定的是行而不是列.

关于r - 按顺序找到向量中前 n 个元素的索引 [R],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38025660/

相关文章:

java - 对根据输入大小平均不同排序算法的持续时间感到困惑吗?

macos - 如何在AppleScript中将窗口的索引设置为最后一个(最远的)

matlab - 在不使用 sub2ind 的情况下使用下标访问值

R:如何在字符串中间添加一个零

python - 如何按字典长度对字典列表进行排序

R:无法在 PopOS 21.04 中安装天才包

python - 将自定义比较与 python 3 中的键选择相结合

elasticsearch - ElasticSearch 中索引关闭的用例是什么?

r 从单个 excel 文件中识别并导入多个表

r - 将数据帧保存到 hdfs 后,当我在使用 rhdfs 读回它时尝试反序列化它时出现错误