是否有与diff()类似的功能,它将连续的元素分开而不是找到差异?将下一个向量的每个元素除以
x = c(10,8,4,-1)
some_function(x)
# [1] 1.25 2.00 -4.00
是否有与diff()类似的功能,它将连续的元素分开而不是找到差异?将下一个向量的每个元素除以
x = c(10,8,4,-1)
some_function(x)
# [1] 1.25 2.00 -4.00
我不认为有这样的事情提供基础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]
与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
赞赏,但同样,为什么建立自己的时候有一个可能提供? –
这里我不打扰一个明确的循环,例如tail(x,-1)/ head(x,-1)',或者直接用'['进行索引。 – joran