【发布时间】:2016-05-05 01:42:00
【问题描述】:
R Fiddle
vals<-c(10.3,10.3,10.2,16.4,18.8,19.7,15.6,18.2,22.6,19.9,24.2,21.0,21.4,21.3,19.1,22.2,33.8,27.4,25.7,24.9,34.5,31.7,36.3,38.3,42.6,55.4,55.7,58.3,51.5,51.0,77.0)
# Standard Order
# the second and third values should be reversed
order(vals)
# ------------------------------------------------------------
# [1] 3 1 2 7 4 8 5 15 6 10 12 14 13 16 9 11 20 19 18 22 17 21 23 24 25
# [26] 30 29 26 27 28 31
# ------------------------------------------------------------
# Reverse Decreasing
# should be the same as the original, but it isn't (it's correct)
rev(order(vals, decreasing=T))
# ------------------------------------------------------------
# [1] 3 2 1 7 4 8 5 15 6 10 12 14 13 16 9 11 20 19 18 22 17 21 23 24 25
# [26] 30 29 26 27 28 31
# ------------------------------------------------------------
我需要一些帮助来理解 R 中发生的事情。我认为在输出顺序时存在错误,并且它们的不同之处。注意两个输出的第二个和第三个值。订单不应该是3,3,1 或2,2,1 或3,2,1,这取决于订单如何处理相同的值?无论如何.. 第三个值应该有 order=1。
我的理解是否正确,还是我遗漏了什么?
【问题讨论】:
-
您确定没有将
order与rank混淆吗? -
正如 joran 所说,
order(vals)输出的初始 3 表示向量中的第 3 项是最小值。这并不意味着向量中的第一项具有第三低的值。所以1 2和2 1是可以互换的,因为这些位置的值是相等的。 -
我之所以考虑它是因为我阅读了另一个类似的问题,并且我还运行了其他功能(排名、排序等),但后来我无法解释 (
order) 的作用,尤其是在帮助的情况下文档。更重要的是,我无法解释为什么decreasing=true的反转会与标准decreasing=false不同
标签: r