我到处寻找这个答案,但我很难弄清楚如何提出这个问题。我正在尝试创建一个函数,使其创建一个向量,该向量是另外两个向量的函数,其中我使用for循环来索引k和k + 1处的值。这是我的代码示例,它不起作用:
x <- 1:10
y <- x^2
d <- data.frame(x,y)
invSlope <- NULL
invSlope.f <- function(X,Y){
for(k in 1:length(X)-1){
invSlope[k] = (X[k+1] - X[k])/ (Y[k+1] - Y[k])
invSlope[length(X)] = 0
return(invSlope)
}
}
d$invSlope <- invSlope.f(d$x,d$y)
我想要完成的是在d $ invSlope [1]我得到它后面的线的斜率的倒数(delta x / delta y)。向量的最后一个值只是0.我可以使用for循环(甚至嵌套for循环)来实现这一点,但我想将其概括为函数。
由于
答案 0 :(得分:1)
diff函数是一种矢量化方法......我们不需要steenkin'循环:
finvslope <- function(xseq, yseq) { c( diff(xseq)/diff(yseq) , 0) }