当 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)表示啥?

R:同时重定向到标准输出和动态文件

当闪亮的文件被分成不同的文件夹时显示 TRUE

在 R 中使用 SVM 且 scale=TRUE(默认)时,是不是可以重命名本地转换中的派生字段名称

R语言中绘图par()函数用法