R order()“返回一个排列”

问题描述 投票:-1回答:3

它说,在R文档中

order返回一个排列,它将其第一个参数重新排列为升序或降序

我理解一个排列是对列表中元素的重新排序。谷歌对“排列”的数学定义是“改变一系列项目的安排,尤其是线性顺序的行为”。

从文档中,我预计调用order(5:1)会返回'[1] 1 2 3 4 5',这是原始向量的排列。我已经知道它包含一个索引向量,使得(5:1)[order(5:1)]返回'[1] 1 2 3 4 5'

对我来说,似乎顺序返回向量索引的排列,而不是向量本身的排列。

order真的“返回重新排列其第一个论点的排列”吗?如果是这样,你如何正确地解释这个陈述?

或者说“订单返回可用于重新排列其第一个参数的索引的排列”会更正确吗?

(我意识到这是迂腐的,但我正在努力改进阅读文档,似乎代码文档本质上是迂腐的。)

r permutation
3个回答
3
投票

排列可以有两个含义:

  • 它是一个重新排序列表中元素的函数。
  • 它是列表中的重新排序元素。

这里的帮助文件是指第一个定义。


0
投票

我知道你要求的术语更多,而不是实际含义,但值得注意的是,它们提供的实现更有用,更清晰。调用具有多个向量的顺序是有效的,例如,当按数据框中的多个列进行排序时。返回索引比返回组合值的元组更实用,并且在等效值的情况下映射回原始行更不明确。

如果你更重要的是文档会更清楚,返回值是索引,我同意。


0
投票

order返回一个索引向量,用于将输入参数置换为排序顺序。 x[order(x)]将始终与sort(x)相同。下面展示了returns a permutation which rearranges its first argument into ascending or descending order的含义。

order(mtcars$qsec)
# [1] 29 31 24 30  7  1 27 22 28  2  5 25 23 12 17 13 16 15 14 10 19 32  3 11 26  4 18 20  8
# [30] 21  6  9

sort(mtcars$qsec)
# [1] 14.50 14.60 15.41 15.50 15.84 16.46 16.70 16.87 16.90 17.02 17.02 17.05 17.30 17.40
# [15] 17.42 17.60 17.82 17.98 18.00 18.30 18.52 18.60 18.61 18.90 18.90 19.44 19.47 19.90
# [29] 20.00 20.01 20.22 22.90

# would be the same as 
mtcars[order(mtcars$qsec),]
© www.soinside.com 2019 - 2024. All rights reserved.