在R中对矩阵应用dy / dx函数

时间:2016-02-04 15:44:57

标签: r matrix gradient apply

我正在努力在矩阵中的两列之间的多个行上应用梯度方程。我已经证明,通过直接将变量输入到函数中,我可以在两组数据点(y2-y1 / x2-x1)之间正确计算梯度。但是,我无法弄清楚如何将其循环到矩阵中。例如:

gradient<-function(y,x){
  a<-y1-y
  b<-x1-x
  c=a/b
  return(c)
}

我的示例矩阵:

df<-matrix(seq(1:40), ncol=2, nrow = 8)
colnames(df)<-c("x","y")


   df
     x  y
[1,] 1  9
[2,] 2 10
[3,] 3 11
[4,] 4 12
[5,] 5 13
[6,] 6 14
[7,] 7 15
[8,] 8 16

我想要做的是编写一个函数,它将取y2-y1 / x2-x1并输出渐变,这将继续y3-y2 / x3-x2,依此类推。任何有关这方面的帮助将不胜感激。我认为函数中的变量索引会出错。

非常感谢, MRF

1 个答案:

答案 0 :(得分:0)

我希望这适合你。 rollapply执行循环。

require(zoo)
A <- matrix(seq(1:40), ncol = 2, nrow = 8)
colnames(A) <- c("x","y")
B <- rollapply(A, width = 2, by = 1, FUN = diff)
C <- B[,"y"]/B[,"x"]