如何对引用 i+1 或 i-1 索引的数组元素执行数学运算?

How can I perform mathematical operations on array elements referencing i+1 or i-1 indexes?

我几乎可以用任何语言编写以下代码。 subtractPrevious 获取一个数组并从第 i 个值中减去第 i+1 个值。我如何使用 R 进行此类计算?这似乎是 lapplydplyr 函数的工作。

x <- c(1,2,3,4,5,6,7,8,9,10)
subtractPrevious <- function(x){
    for (i in 1:length(x)){
       if (i == 1) {
           y[1] <- NA
       } else {
           y[i] <- x[i] - x[i-1]
       }
    }
    return(y)
}

y <- subtractPrevious(x)

我用这个:

   y <- x - c(0,x[1:length(x)-1])

作为解释(按照评论中的要求),我将 0 连接到一个新向量的前面,该新向量是通过将原始向量右移一位(并切掉掉落边缘的最后一个元素)形成的。

好处是它只使用核心 R 并推广到其他情况(如问题标题中所要求的)。因此,例如,如果我想减去后续值,我可以这样做:

   y <- x - c(x[2:length(x)],0)

我一直使用这些东西来引用滞后变量、求差等....

为此有一个内置函数diff

c(NA,diff(x))