【发布时间】:2015-06-04 18:30:26
【问题描述】:
我正在使用“for”循环计算每个点的角度。但不知何故,矩阵没有按需要填充。只有矩阵中的第一个元素填充了计算值。
w1 = c(-2.40154, -1.82937)
w2 = c(-2.079041, 101,0663)
xy = as.data.frame(coordinates(p))
angle = function (w1, w2 , p, ...) {
iterations = 2500
a = sqrt ((w1[1]-w2[1])^2 + (w1[2]-w2[2])^2)
tr <- matrix(ncol=1, nrow=iterations)
for (i in 1:iterations) {
b[i] = sqrt ((p$coords.x1[i]-w1[1])^2 + (p$coords.x2[i]-w1[2])^2)
c[i] = sqrt ((p$coords.x1[i]-w2[1])^2 + (p$coords.x2[i]-w2[2])^2)
tr[i,] = (acos ((b[i]^2 + c[i]^2 - a^2)/ (2*b[i]*c[i]))*180)/pi
print(tr)
}
return(tr)
}
t = angle(w1,w2,xy)
tr 仅获得第一个值。请更正代码。
【问题讨论】:
-
您的
return(tr)不应该在for循环之外吗?否则只会发生一次迭代。此外,您似乎正在为每次迭代覆盖tr。这是你的意图吗? -
看起来您的括号不匹配。此外,您可能应该将
tr放在循环之外。 -
你想把
tr <- matrix(ncol=1, nrow=iterations)放在iterations = 2500之后