我无法理解 R 函数 rank
和 R 函数 order
之间的区别。它们似乎产生相同的输出:
> rank(c(10,30,20,50,40))
[1] 1 3 2 5 4
> order(c(10,30,20,50,40))
[1] 1 3 2 5 4
有人可以帮我解释一下吗? 谢谢
最佳答案
set.seed(1)
x <- sample(1:50, 30)
x
# [1] 14 19 28 43 10 41 42 29 27 3 9 7 44 15 48 18 25 33 13 34 47 39 49 4 30 46 1 40 20 8
rank(x)
# [1] 9 12 16 25 7 23 24 17 15 2 6 4 26 10 29 11 14 19 8 20 28 21 30 3 18 27 1 22 13 5
order(x)
# [1] 27 10 24 12 30 11 5 19 1 14 16 2 29 17 9 3 8 25 18 20 22 28 6 7 4 13 26 21 15 23
rank
返回一个向量,其中包含每个值的“排名”。第一个位置的数字是倒数第 9 个。 order
返回将初始向量 x
按顺序排列的索引。
x
的第 27 个值是最低的,因此 27
是 order(x)
的第一个元素 - 如果您查看rank(x)
,第 27 个元素是 1
。
x[order(x)]
# [1] 1 3 4 7 8 9 10 13 14 15 18 19 20 25 27 28 29 30 33 34 39 40 41 42 43 44 46 47 48 49
关于R中的等级和顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12289224/