R 如何对引用I+的数组元素执行数学运算;1还是i-1索引?
我几乎可以用任何语言编写以下代码R 如何对引用I+的数组元素执行数学运算;1还是i-1索引?,r,dplyr,R,Dplyr,我几乎可以用任何语言编写以下代码subtractPrevious获取一个数组,并从ith值中减去i+1st值。如何使用R进行此类计算?它看起来像是一个用于lappy的工作,或者可能是一个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
subtractPrevious
获取一个数组,并从i
th值中减去i+1
st值。如何使用R进行此类计算?它看起来像是一个用于lappy
的工作,或者可能是一个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)
x我用这个:
y <- x - c(0,x[1:length(x)-1])
y我用这个:
y <- x - c(0,x[1:length(x)-1])
y这有一个内置函数diff
:
c(NA,diff(x))
这有一个内置函数diff
:
c(NA,diff(x))
虽然这个答案可能是正确和有用的,但如果您在答案中包含一些解释,以解释它如何帮助解决问题,则更可取。这在将来变得特别有用,如果有一个变化(可能无关)导致它停止工作,并且用户需要了解它曾经是如何工作的。当然。但这是向量和c运算符的最基本用法,两者都是R的核心。参见diff
可能更适合于此-它有一个lag=
参数,您可以指定要返回的距离。例如,c(rep(NA,n),diff(x,lag=n))
作为一种通用模式将起作用。是的,但diff只适用于diff。这使用了向量子集,这对事物的世界是有用的,并且是R的基础。Hadley Wickham花了整整一章讨论子集,但几乎没有提到差异,这并不是毫无意义的。但我想这是一个品味的问题。奇怪的是,我得到了这个答案。这是一个非常简单的答案,也是一种非常常见的技术。我承认diff不太容易出错。这是一个优势。虽然这个答案可能是正确和有用的,但如果你在答案中加入一些解释来解释它是如何帮助解决问题的,你会更喜欢这个答案。这在将来变得特别有用,如果有一个变化(可能无关)导致它停止工作,并且用户需要了解它曾经是如何工作的。当然。但这是向量和c运算符的最基本用法,两者都是R的核心。参见diff
可能更适合于此-它有一个lag=
参数,您可以指定要返回的距离。例如,c(rep(NA,n),diff(x,lag=n))
作为一种通用模式将起作用。是的,但diff只适用于diff。这使用了向量子集,这对事物的世界是有用的,并且是R的基础。Hadley Wickham花了整整一章讨论子集,但几乎没有提到差异,这并不是毫无意义的。但我想这是一个品味的问题。奇怪的是,我得到了这个答案。这是一个非常简单的答案,也是一种非常常见的技术。我承认diff不太容易出错。这是一个优势。这不是本质上的diff
函数,在开始时用NA填充吗?这不是本质上的diff
函数,在开始时用NA填充吗?