【发布时间】:2018-02-06 19:14:14
【问题描述】:
在下面的函数中我必须在拟合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())。”这里的 where 环境是什么(parent.frame = plot_model 环境?),如果没有 bquote(调用 gam 创建的环境?),它将在什么环境中进行评估?
【问题讨论】: