在R文档中,它说
order
返回一个排列,将其第一个参数重新排列为升序或降序
我理解一个排列是对列表中元素的重新排序。 Google对“置换”的数学定义是“改变一系列项目的排列,尤其是线性顺序的行为。”
从文档中,我预计调用order(5:1)
将返回'[1] 1 2 3 4 5'
,即原始向量的置换。我已经知道它包含一个索引向量,(5:1)[order(5:1)]
返回'[1] 1 2 3 4 5'
。
对我而言,似乎顺序返回向量索引的排列,而不是向量本身的排列。
order
真的“返回重新排列其第一个参数的排列”吗?如果是这样,你如何正确地解释这个陈述?
或者说“订单返回可用于重新排列其第一个参数的索引的排列”会更正确吗?
(我意识到这很迂腐,但我正在努力改进阅读文档,似乎代码文档本质上是迂腐的。)
答案 0 :(得分:3)
排列可以有两个含义:
此处的帮助文件是指第一个定义。
答案 1 :(得分:0)
我知道你要求的术语更多,而不是实际意义,但值得注意的是,他们提供的实施更有用,更清晰。调用具有多个向量的顺序是有效的,例如,当按数据框中的多个列进行排序时。返回索引比返回组合值的元组更实用,并且在等效值的情况下映射回原始行更不明确。
如果您更大一点是文档会更清楚返回值是索引,我同意。
答案 2 :(得分: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),]