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)
是用目前为止的最大值代替好点和坏点。
我有大约 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)
是用目前为止的最大值代替好点和坏点。