【发布时间】:2016-02-04 15:44:57
【问题描述】:
我正在努力对矩阵中两列之间的多行应用梯度方程。我已经证明我可以通过将变量直接输入函数来正确计算两组数据点(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,依此类推。对此的任何帮助将不胜感激。我认为函数中变量的索引出错了。
非常感谢, 核磁共振
【问题讨论】:
-
你能根据这个输入显示你的预期输出吗?你函数中的“n”从何而来?
-
也许看
?diff来计算y2-y1、y3-y2等。 -
对不起,我想我对等式感到困惑,我将对其进行编辑。预期的输出将是一个包含 y(n+1)/y(n)/x(n+1)-x(n) 的所有梯度的向量
-
类似的东西:
diffs <- diff(df); diffs[, 1]/diffs[, 2].