将矢量的每个元素除以下一个

时间:2017-03-09 15:38:22

标签: r function

是否有diff()的类似函数,它将连续的元素分开而不是找到差异?

x = c(10,8,4,-1)
some_function(x)
# [1]  1.25  2.00 -4.00

2 个答案:

答案 0 :(得分:2)

我不认为基础R中有类似的东西。但你可以尝试创建自己的解决方案,例如

unlist(sapply(2:length(x), function(i) x[i-1]/x[i]))
# unlist (sort of) takes care of when x has less than 2 elements

OR

x[-length(x)]/x[-1]

答案 1 :(得分:0)

dplyr的另一个选项是使用lag

library(dplyr)
lag(x)/x

#[1]    NA  1.25  2.00 -4.00

如果您要删除NA,请执行

y = lag(x)/x
y[-1]

#[1]  1.25  2.00 -4.00