我在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)