返回 R 中矩阵的 k 个最小值的索引

Posted

技术标签:

【中文标题】返回 R 中矩阵的 k 个最小值的索引【英文标题】:Return the indices of the k smallest values of a matrix in R 【发布时间】:2018-08-29 21:46:54 【问题描述】:

建议我在 R 中有以下矩阵:

set.seed(123)  # the only way to have a reproducible result
m <- matrix(runif(16,1,20), 8,1)

 m
          [,1]
[1,]  6.463973
[2,] 15.977798
[3,]  8.770562
[4,] 17.777331
[5,] 18.868878
[6,]  1.865573
[7,] 11.034004
[8,] 17.955962

我现在希望以排序的方式返回 4 个最小值的索引。在该示例中,我试图获得一个包含索引 6, 1, 3, 7 的对象,从第一个最小值到第四个最小值排序。谢谢!

【问题讨论】:

您是要搜索整个矩阵还是一次只搜索一列? 你在找order(m)[1:4] sapply(1:4, function(x) which(m == sort(m)[x])). @Onyambu:太好了,可能是最短的方法! 【参考方案1】:

此函数按升序对矩阵元素进行排序。选项 index.return 设置为 TRUE 将添加除了排序值之外的索引。 $ix 允许你直接返回排序后的索引

sort(m,index.return = TRUE)$ix

【讨论】:

以上是关于返回 R 中矩阵的 k 个最小值的索引的主要内容,如果未能解决你的问题,请参考以下文章

获取R中矩阵每一行中K个最小或最大元素的索引

使用numpy选择排除某些索引的数组中最小值的索引

如何获取列中多个最小值的索引?

在矩阵中查找最小值的索引

华为OD机试 - 第 K 个最小码值的字母(Python) | 机试题+算法思路+考点+代码解析 2023

华为OD机试真题Python实现第 K 个最小码值的字母真题+解题思路+代码(2022&2023)