Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
for循环内部函数的输出不正确_R_Function_For Loop - Fatal编程技术网

for循环内部函数的输出不正确

for循环内部函数的输出不正确,r,function,for-loop,R,Function,For Loop,我创建了一个简单的循环来计算一些模拟数据的效率。作为一个回路,它的性能非常好: NSE_cal <- NULL for(i in 1:6) { Qobs <- flowSummary_NSE1[[i]][[3]] Qsim <- flowSummary_NSE1[[i]][[1]] object_cal <- NSEsums("NSE") NSE_cal <- c(NSE_cal, object_cal) } #NSE_cal #[1] 0.84666

我创建了一个简单的循环来计算一些模拟数据的效率。作为一个回路,它的性能非常好:

NSE_cal <- NULL

for(i in 1:6) {
 Qobs <- flowSummary_NSE1[[i]][[3]]
 Qsim <- flowSummary_NSE1[[i]][[1]]
 object_cal <- NSEsums("NSE")
 NSE_cal <- c(NSE_cal, object_cal)
 }

#NSE_cal
#[1] 0.8466699 0.7577019 0.8128499 0.9163561 0.7868013 0.8462228
函数本身具有与for循环中完全相同的信息输入,除了出于某种原因,它为
i
的每种情况输出相同的值

很明显,我做错了什么。但就我所见,它必须是函数本身包含的简单内容。但是,如果在其他地方出现错误,我已经附加了生成必要数据和依赖函数的代码()


如果您需要将对象作为参数传递到嵌套函数中,将不胜感激


在函数\u NSEsums.r脚本中,将第一行更改为
NSEsums,感谢您抽出时间查看相关资料;我确信我已经完成了每一个部分。现在解决办法似乎相当明显!我将把它添加到我的列表中,以便在下次函数中的for循环不起作用时尝试,非常欢迎。仅供参考,你的坏函数不会有0.846的输出。。如果在运行全局环境之前清除了它,则执行六次。它从那里提取Qobs和Qsim,因此每次都有相同的值。这很有道理!我总是在它之前运行普通循环,以便确认输出是正确的。我将把它添加到下次故障排除时要尝试的事项列表中。谢谢你的建议
badFunction <- function(transformation){

 NSE_cal <- NULL

 for(i in 1:6) {
  Qobs <- flowSummary_NSE1[[i]][[3]]
  Qsim <- flowSummary_NSE1[[i]][[1]]
  object_cal <- NSEsums(transformation)
  NSE_cal <- c(NSE_cal, object_cal)
 }
  print(NSE_cal)
}

 badFunction("NSE")
 # [1] 0.8462228 0.8462228 0.8462228 0.8462228 0.8462228 0.8462228
badFunction <- function(transformation){

  NSE_cal <- NULL

  for(i in 1:6) {
    Qobs <- flowSummary_NSE1[[i]][[3]]
    Qsim <- flowSummary_NSE1[[i]][[1]]
    object_cal <- NSEsums(transformation, Qobs = Qobs, Qsim = Qsim)
    NSE_cal <- c(NSE_cal, object_cal)
  }

  print(NSE_cal)

}

badFunction("NSE")

[1] 0.8466699 0.7577019 0.8128499 0.9163561 0.7868013 0.8462228