当index.return=TRUE时,在R中对函数进行排序



我在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,第一个元素位于排序向量的第四个位置。因此,"$ix";应该是4。为什么是3?

那么,向量的最大数是A的第6个。但是$ix的第六个元素不是我所期望的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)

最新更新