返回 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 个最小值的索引的主要内容,如果未能解决你的问题,请参考以下文章