R:将向量的第 i 个元素与之前所有元素进行比较的最快方法

R: Fastest way to compare i element of a vector with all the previous ones

我有大约 1200 个数据帧,每个数据帧大约有 25000 个值。

这个数据帧基本上包含一个增量时间序列,有时在测量中有错误并在再次达到正确值之前下降到 0(案例 1)或下降到 0 但它不会自动更正(案例 2) ).

案例 1 示例:

案例 2 示例:

我想重新标记小于先前值的点。基本上对于每个值 i 我想将值 i 与之前的所有值 j 进行比较(j = length(vector)-i)我尝试按如下方式进行:

x <- c(10,11,12,13,14,1,7,8,14,16,19,22) y <- x sapply(x,function(z){z<y})

获得以下内容:

       [,1]  [,2]  [,3]  [,4]  [,5]  [,6]  [,7]  [,8]  [,9] [,10] [,11] [,12]
 [1,] FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE
 [2,]  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE
 [3,]  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE
 [4,]  TRUE  TRUE  TRUE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE
 [5,]  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE
 [6,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [7,] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
 [8,] FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE
 [9,]  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE
[10,]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE
[11,]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE
[12,]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE

但是我无法提取可用于过滤掉这些数据的模式。

有人试过这个吗?

如果这个想法是该系列应该是非递减的,那么

ok <- cummax(x) == x

优点是正确的,

x[ok]

只是优点还是

cummax(x)

是用目前为止的最大值代替好点和坏点。