如何对引用 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 进行此类计算?这似乎是 lapply
或 dplyr
函数的工作。
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))
我几乎可以用任何语言编写以下代码。 subtractPrevious
获取一个数组并从第 i
个值中减去第 i+1
个值。我如何使用 R 进行此类计算?这似乎是 lapply
或 dplyr
函数的工作。
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))