为什么 order(order(x)) 等于 R 中的 rank(x)?
Why does order(order(x)) is equal to rank(x) in R?
在此post中声明order(order(x))
与rank(X)
相同。
虽然一些实验证实了这一点...
#why is order(order(x)) == rank(x)?
x <- c(0.2, 0.5, 0.1)
x
## [1] 0.2 0.5 0.1
order(x)
## [1] 3 1 2
rank(x)
## [1] 2 3 1
order(order(x))
## [1] 2 3 1
我看不出如何证明这一点,更好的是,凭直觉。
相关:rank and order in R
首先看看由 1:10:
的排列形成的整数序列会发生什么
> set.seed(123); x <- sample(10)
> x
[1] 3 8 4 7 6 1 10 9 2 5
> order(x)
[1] 6 9 1 3 10 5 4 2 8 7
> order(order(x))
[1] 3 8 4 7 6 1 10 9 2 5
> rank(x)
[1] 3 8 4 7 6 1 10 9 2 5
在这种情况下,order
-操作是它自己的逆运算。由于 order
操作总是 returns 从 1 开始的序列,因此 order
的任何嵌套奇数应用程序都将给出相同的向量。
订购returns一个索引向量,可用于对原始向量进行排序。所以最小项的位置在第一个位置,第二个最小值的位置在 next, .... ,最后一项是最大项的位置。因此,当您再次对索引向量执行该操作时,第一项现在是最小索引的索引,依此类推......以及向量的等级。
我认为直觉是这样的:排名只是 "on which position would the item on the first, second, ... last position be if one sorted all items first" 的快捷方式。
因为我们讨论的是向量的位置,所以我们必须嵌套order
函数。
如上例所示,从第一个位置的外部 order
函数开始,这个函数告诉我们最小索引在哪里 (= 2)。现在最小的索引恰好在你订购它时数字所在的位置(这就是 order
函数所做的),所以在上面的例子中,因为第一个数字(= 0.2)是第二大的一个在第二个位置。
所以这只是一种奇特的说法,如果您首先订购向量,第一个数字将排在第二位 - 这与 rank
函数给出的没什么不同。
在此post中声明order(order(x))
与rank(X)
相同。
虽然一些实验证实了这一点...
#why is order(order(x)) == rank(x)?
x <- c(0.2, 0.5, 0.1)
x
## [1] 0.2 0.5 0.1
order(x)
## [1] 3 1 2
rank(x)
## [1] 2 3 1
order(order(x))
## [1] 2 3 1
我看不出如何证明这一点,更好的是,凭直觉。
相关:rank and order in R
首先看看由 1:10:
的排列形成的整数序列会发生什么> set.seed(123); x <- sample(10)
> x
[1] 3 8 4 7 6 1 10 9 2 5
> order(x)
[1] 6 9 1 3 10 5 4 2 8 7
> order(order(x))
[1] 3 8 4 7 6 1 10 9 2 5
> rank(x)
[1] 3 8 4 7 6 1 10 9 2 5
在这种情况下,order
-操作是它自己的逆运算。由于 order
操作总是 returns 从 1 开始的序列,因此 order
的任何嵌套奇数应用程序都将给出相同的向量。
订购returns一个索引向量,可用于对原始向量进行排序。所以最小项的位置在第一个位置,第二个最小值的位置在 next, .... ,最后一项是最大项的位置。因此,当您再次对索引向量执行该操作时,第一项现在是最小索引的索引,依此类推......以及向量的等级。
我认为直觉是这样的:排名只是 "on which position would the item on the first, second, ... last position be if one sorted all items first" 的快捷方式。
因为我们讨论的是向量的位置,所以我们必须嵌套order
函数。
如上例所示,从第一个位置的外部 order
函数开始,这个函数告诉我们最小索引在哪里 (= 2)。现在最小的索引恰好在你订购它时数字所在的位置(这就是 order
函数所做的),所以在上面的例子中,因为第一个数字(= 0.2)是第二大的一个在第二个位置。
所以这只是一种奇特的说法,如果您首先订购向量,第一个数字将排在第二位 - 这与 rank
函数给出的没什么不同。