哇,我完全瞎了……我读了apply,lapply等文档,但找不到任何东西。
假设我有一个向量
a = c(1,4,5,23,6,3,121,412,23)
我想对c(1,4),c(4,5),c(5,23)等应用一个函数。因此,所得向量的长度应为
length(a)-1
我认为,这确实很简单。甚至,我认为我已经做到了。但是,谢谢您的帮助。
我要应用的函数基本上是斜率或导数。
多亏了我现在的回答:
slope = function(p){
return (p[2] - p[1])
}
foo = rollapply(a, 2, slope)
rollapply
zoo包中的功能似乎是您想要的
> library(zoo)
> a
[1] 1 4 5 23 6 3 121 412 23
> rollapply(a, 2, sum)
[1] 5 9 28 29 9 124 533 435
请注意,有针对特定操作的自定义rollxxx类型函数,因此更多详细信息可以提供更优化的解决方案。
编辑:看到您的编辑后,很显然您想要的只是diff
。
> diff(a)
[1] 3 1 18 -17 -3 118 291 -389
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句