当 index.return=TRUE 时,R 中的排序函数
Posted
技术标签:
【中文标题】当 index.return=TRUE 时,R 中的排序函数【英文标题】:Sort function in R when index.return=TRUE 【发布时间】:2022-01-15 21:15:32 【问题描述】:我在 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。为什么?
等等,对于所有元素。显然,我对这个输出有些不理解。
【问题讨论】:
【参考方案1】:$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)
【讨论】:
以上是关于当 index.return=TRUE 时,R 中的排序函数的主要内容,如果未能解决你的问题,请参考以下文章
R闪亮:当multiple = TRUE时selectInput()不反映变量选择
java nio 方面的,我不明白while(true)表示啥?