当前位置:  开发笔记 > 编程语言 > 正文

R中的"累积差异"功能

如何解决《R中的"累积差异"功能》经验,为你挑选了1个好方法。

是否存在预先存在的函数来计算连续值之间的累积差异?

背景:这是为了估计一个人在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这样的实现.



1> Matthew Lund..:

这比你的要短:

sum(abs(diff(x)))

除了diff用于计算差异之外,它等同于您的第二个解决方案,而abs不是Mod因为输入是真实的(没有虚构的组件).

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有