【发布时间】:2015-07-13 08:43:05
【问题描述】:
在下面的代码中我遇到了错误:
运行时错误 while (x0tol) { 中的错误:需要 TRUE/FALSE 的缺失值 执行停止
如果我注释掉循环,x0tol 返回 TRUE 和逻辑类。我错过了什么?提前谢谢你。
a = c(1,2,2,3,3,4,5,6,6,6,8,10)
b = c(-890,1411,-1560,-2220,-2091,-2878,-3537,-3268,-3920,-4163,-5471,-5157)
data = data.frame(a,b)
tol = .0001
m = dim(data)[1]
x0 = 0
x1 = 0
x0temp = 1
x1temp = 1
alpha = 1
x0tol = TRUE
while(x0tol){
x0sum = 0
x1sum = 0
for (i in 1:m){
x0sum = x0 + x1*data[m,1] - data[m,2]
x1sum = (x0 + x1*data[m,1] - data[m,2])*data[m,1]
}
x0temp = x0 - alpha*1/m*x0sum
x1temp = x1 - alpha*1/m*x1sum
x0tol = (abs(x0 - x0temp) > tol)
x1tol = x1 - x1temp
x0 = x0temp
x1 = x1temp
class(x0tol)
x0tol
}
【问题讨论】:
-
x0tol在循环中变为 NA(因为x0变为 NaN 并且abs(NaN)>0为 NA)。while(NA)生成您遇到的错误。您没有描述意图,因此不清楚您期望什么行为。 -
此外,x0 转到-Inf,这可能是不希望的。
-
我试图为两个未知参数编写一个简单的线性回归模型。期望的结果是 x0 和 x1 收敛到基于提供的数据的估计值。这应该小于某个容差值。
标签: r loops logical-operators