变量在函数内进行评估,但在全局环境中显示NA

时间:2017-03-27 19:58:53

标签: r function matrix

我是R.的新手。最近我一直在努力实现一个多重的RBF插值过程。我使用“优化”来尝试最小化平方误差(SSE)以找到最佳拟合。然而,我遇到的一个问题是权重(w)在循环完成后显示NA值。所以我放置了一个断点并尝试调试。我查看了几次迭代,w矩阵在函数中很好。如果我切换到全局环境,w矩阵仍然显示NA值。有什么建议?

以下是我使用的代码:

SSE <- function(epsilon) {
 for (lin in 1:N) {
  for (col in 1:N) {    
   Phi[lin,col] <- 0
   for (RD in 1:C){
    Phi[lin,col] <- Phi[lin,col] + (CalibScen[lin,RD]-CalibScen[col,RD])^2 * 
                                        Scale_factor[RD,1]^2
   }

   Phi[lin,col] <- rbf.multi(sqrt(Phi[lin,col]),epsilon)
  }          
 }

w <- solve(Phi, Calibdata)`  #Solve for RBF weights


# determine sum squared error

for (j in 1:N) {
 for (k in 1:N){
  SumDiff[k] <-0
  for (RD in 1:C){
   SumDiff[k] <- SumDiff[k] + (CalibScen[j,RD]-CalibScen[k,RD])^2 * 
                               Scale_factor[RD,1]^2
  }
  rbf[k] <- rbf.multi(sqrt(SumDiff[k]),epsilon)

 }
 Est[j] <- t(w)%*%rbf
 SquaredError[j] <- ((Calibdata[j] - Est[j]))^2
}

SSE <- sum(SquaredError[j])
}

best_epsilon <- optimize(SSE,c(0.1,2.0),maximum = FALSE, tol = 0.001)

0 个答案:

没有答案