R语言order()函数返回向量排序索引结果不正确如何解决
原因说明
R语言的order()函数默认按升序规则返回元素索引,你当前得到的输出是从小到大排列的元素索引,所以最大值对应的索引1排在结果末尾,和你期望的从大到小排序的需求相反。
解决方法
有两种常用方案可以得到符合要求的降序排序索引:
方法1:给
order()添加decreasing = TRUE参数,明确指定按降序排列myvec <- c(2821774, 435266, 101643, 38311, 280264, 716010, 546901, 16732 , 87282, 329322, 156031, 1018510, 77215) order(myvec, decreasing = TRUE)运行输出为:
[1] 1 12 6 7 2 10 5 11 3 9 13 4 8
首位就是最大值对应的索引1,完全符合需求。方法2:对默认升序的
order()结果调用rev()翻转顺序rev(order(myvec))运行结果和方法1完全一致。
两种方案都可以正常使用,推荐优先使用方法1,参数语义更明确,代码可读性更高。
内容的提问来源于stack exchange,提问作者Mathica
相关产品推荐
相关产品推荐

