繁体   English   中英

R中的“累积差异”功能

[英]“Cumulative difference” function in R

是否有一个预先存在的函数来计算结果值之间的累积差?

背景:这是为了估算一个人在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 ,因为输入是实数(无虚部)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM