我想逐渐重新排列这个向量:
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
答案 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
?因为订单按递增顺序返回索引。通过将数字翻转到零附近,您可以按递减顺序获得索引)