在以下函数中,我必须在拟合gam模型时使用bquote函数以避免错误
eval(expr,envir,enclos)中的错误:找不到对象'x'
当plot.gam被调用时 . 由于我想要绘制的因子变量而发生错误 . 但是我真的不明白bquote在这里做了什么,为什么我需要它 .
library(mgcv)
plot_model <- function(x){
# agam <- gam(mean ~ s(bla) + bla2, data=x)
agam <- eval(bquote(mgcv::gam(mean ~ s(bla) + bla2, data=.(x))))
plot(agam, pages=1, all.terms = TRUE)
}
bla <- data.frame(bla=rnorm(20), bla2=sample(letters[1:4], size=20, replace=T),
mean=sample(20))
plot_model(bla)
R-help说“bquote引用它的论点,除了包含在 . ()中的术语在指定的where环境中进行计算 . 用法bquote(expr,where = parent.frame()) . ”这里的环境是什么(parent.frame = plot_model环境?)以及在没有bquote(通过调用gam创建的环境?)的情况下评估它的环境是什么?
1 回答
bquote
将表达式.(X)
替换为x
的值 . 因此,实际评估的是:此错误会弹出,因为
plot.gam
要求在全局环境中查找符号x
而不是plot_model
的环境 .使用
recover
调试时: