说我有矢量:
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)的所有元素都是乱序的。我想删除这些元素。
执行此操作的矢量化/快捷方式?
答案 0 :(得分: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