E B*_*E B 5 regression r linear-regression lm cross-validation
我正在使用,CVlm {DAAG}并且我想设置,printint=FALSE因为默认值是
printit if TRUE, output is printed to the screen
Run Code Online (Sandbox Code Playgroud)
我尝试使用plotit和printitto运行该函数FALSE,但后来发现错误:sumssvariable not find。
有没有办法实际设置printit和plotittoFALSE因为我不想在屏幕上打印绘图或表格?
关于2015年9月3日更新的最新DAAG_1.22
放松,您已经发现了 的错误CVlm {DAAG}。我确信您已将printit和设置plotit为FALSE,这会重现该问题。考虑以下可重现的示例:
library(DAAG)
CVlm(printit = FALSE) ## OK, plot generated, no ANOVA table printed
CVlm(plotit = FALSE) ## OK, ANOAV table printed, no plot generated
CVlm(printit = FALSE, plotit = FALSE) ## Oops...
# Error in CVlm(printit = FALSE, plotit = FALSE) : object 'sumss' not found
Run Code Online (Sandbox Code Playgroud)
现在,快速扫描一下源代码就可以发现问题。局部变量sumss定义于:
if (printit | plotit) {
sumss <- 0
sumdf <- 0
## ...blablabla
}
Run Code Online (Sandbox Code Playgroud)
即,printit和plotit需要TRUE声明并初始化sumss。然而,在最后CVlm:
attr(data, "ms") <- sumss/sumdf
attr(data, "df") <- sumdf
Run Code Online (Sandbox Code Playgroud)
没有if条件保护他们。因此,当您到达这些行时,您会收到“找不到变量”错误。
我不是软件包作者或维护者,所以我不热衷于解决这个问题。我只是建议你保留plotit = TRUE。
我看到你的新编辑来澄清这个问题。如果您既不想绘图也不想打印,则必须CVlm自己修改函数,删除attr上面提到的两行。看起来软件包作者并不热衷于维护这个软件包,因此要求修复错误似乎很绝望。