是否有一个预先存在的函数来计算连续值之间的累积差异?
上下文:这是为了估计一个人在旅程中必须在两个方向上经历的高度变化自行车街网.
可重现的例子:
x <- c(27, 24, 24, 27, 28) # create the data
方法一: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
,因为输入是实数(没有虚数部分)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)