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