是否存在预先存在的函数来计算连续值之间的累积差异?
背景:这是为了估计一个人在CycleStreet.net生成的旅程中必须在两个方向上进行的高度变化.
可重复的例子:
x <- c(27, 24, 24, 27, 28) # create the data
方法1:for循环
for(i in 2:length(x)){ # for loop way if(i == 2) cum_change <- 0 cum_change <- Mod(x[i] - x[i - 1]) + cum_change cum_change } ## 7
方法2:矢量化
diffs <- Mod(x[-1] - x[-length(x)]) # vectorised way sum(diffs) ## 7
两者似乎都有效.我只是想知道在基本R中是否存在另一种(更普遍的)实现,或者像dplyr或RcppRoll这样的实现.
这比你的要短:
sum(abs(diff(x)))
除了diff
用于计算差异之外,它等同于您的第二个解决方案,而abs
不是Mod
因为输入是真实的(没有虚构的组件).