Order函数返回不同的值作为vector

时间:2014-07-16 12:42:26

标签: r

我想逐渐重新排列这个向量:

x <- c(10, 10, 7, 3, 6, 2, 2, 7, 8, 1, 3, 1, 1, 1, 5, 5, 5, 4, 4, 2, 1, 4, 4, 3, 3, 2, 2, 1)
order(x)

但它会返回不同的数字:

## [1] 10 12 13 14 21 28  6  7 20 26 27  4 11 24 25 18 19 22 23 15 16 17  5  3  8  9  1  2

2 个答案:

答案 0 :(得分:2)

order函数返回排列,而非排序向量

http://stat.ethz.ch/R-manual/R-patched/library/base/html/order.html

  > x <- c (3, 2, 4, 1)
  > order(x)
  [1] 4 2 1 3

结果(4 2 1 3)表示最小项是第4项(即1),第二项是第2项(2)。 。最大是3d项目(即4)

如果你想排序向量,请使用sort函数:

  > sort(x)
  [1] 1 2 3 4

要按减少顺序排序,请指定decreasing参数:

  > sort(x, decreasing = TRUE)
  [1] 4 3 2 1

答案 1 :(得分:1)

order(x)按递增顺序返回x元素的索引。您会注意到x中的最小元素位于x中的第10个位置,第二个最小(实际上同样小)位于第12个位置,依此类推。

要按递减顺序获取x,您可以使用

sort(x, decreasing=TRUE)

或使用order作为索引:

x[order(-x)]

(为什么-x?因为订单按递增顺序返回索引。通过将数字翻转到零附近,您可以按递减顺序获得索引)