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