index.return=TRUE 时 R 中的排序函数

Sort function in R when index.return=TRUE

我在 R 中有以下向量:

> A<-c(8.1915935,  3.0138083,  0.3245712, 10.7353747, 13.7505131 ,63.2337407, 16.7505131,  5.7781297)

我想对它进行排序,同时知道每个元素在排序向量中的位置。所以我使用以下功能:

sort(A, index.return=T)

然后我得到以下输出,我不太明白:

$x
[1]  0.3245712  3.0138083  5.7781297  8.1915935 10.7353747 13.7505131 16.7505131 63.2337407

$ix
[1] 3 2 8 1 4 5 7 6

查看原始向量 A,第一个元素位于排序向量的第 4 个位置。所以“$ix”的第一个元素应该是4,为什么是3?

那么向量的最大数就是A的第6位。但是 $ix 的第 6 个元素不是 8,正如我预期的那样(向量的长度)而是 6。为什么?

以此类推,对于所有元素。显然,我对这个输出有些不理解。

$ix表示x的元素在原向量中的位置;您希望相反 - x 中原始向量中元素的位置。区别在于order()rank()

> order(A)
[1] 3 2 8 1 4 5 7 6
> rank(A)
[1] 4 2 1 5 6 8 7 3

请注意 order(order(A)) == rank(A),因此获得所需答案的一种方法是

result <- sort(A, index.return = TRUE)
order(result$ix)