2

说我有向量:

x <- c(11,6,5,3,2,1,25,10,16,12,22,24,19,14,18,32,17,15,8,7,
       33,4,27,9,29,13,30,23,20,31,26,21,28)
x
[1] 11  6  5  3  2  1 25 10 16 12 22 24 19 14 18 32 17 15  8  7 33  4 27  9 29 13 30 23 20
[30] 31 26 21 28

我想确定哪些元素没有升序。因此,例如,元素 2 到 5(值 6、5、3、2、1)是无序的,因为它们小于元素 1 (11)。然后元素 6 是有序的,因为它大于 11,那么直到元素 16 (32) 之前的所有元素都是无序的。我想删除这些元素。

这样做的矢量化/快捷方式?

4

1 回答 1

7

创建一些数据:

set.seed(1)
x <- sample(100, 30)
x
[1] 27 37 57 89 20 86 97 62 58  6 19 16 61 34 67 43 88 83 32 63 75 17 51 10 21 29  1 28 81 25

仅选择那些大于或等于累积最大值的元素:

x[x >= cummax(x)]
[1] 27 37 57 89 97
于 2012-08-21T15:15:29.917 回答