我正在尝试探索mgcv软件包与gam软件包中“ gam”功能的工作方式的差异。但是,我无法在一个R会话中同时运行这两个gam函数。我以为如果我以mgcv :: gam或gam :: gam开头,它将能够运行正确的功能,但是看起来我必须分离mgcv才能在gam软件包中运行gam函数。
library(ISLR)
library(mgcv)
library(gam)
# I get an error message when it runs this
gam.m3 <- gam::gam(wage~s(year,4)+s(age,5)+education,data=Wage)
# No error message when I detach mgcv
detach(package:mgcv)
gam.m3 <- gam::gam(wage~s(year,4)+s(age,5)+education,data=Wage)
是否可以在一个会话中同时运行两个gam函数?
下面是输出:
> library(ISLR)
> library(mgcv)
> library(gam)
> #I get an error message when it runs this
> gam.m3 <- gam::gam(wage~s(year,4)+s(age,5)+education,data=Wage)
Error in terms.formula(reformulate(term[i])) :
invalid model formula in ExtractVars
> #No error message when I detach mgcv
> detach(package:mgcv)
> gam.m3 <- gam::gam(wage~s(year,4)+s(age,5)+education,data=Wage)
Warning message:
In model.matrix.default(mt, mf, contrasts) :
non-list contrasts argument ignored
更新:我通过一个干净的R会话重新运行了这个故事,但情况不同。之前,我清除了工作空间,但没有清除的R会话。现在,如果我运行干净,则gam.m3模型似乎可以正常工作。但是-如果在mgcv之前更改库加载和加载gam的顺序,则会遇到相同的错误。在加载gam之后加载mgcv时,我确实收到了以下消息:
The following objects are masked from ‘package:gam’:
gam, gam.control, gam.fit, s
所以我想加载mgcv只是部分原因,就是您不能再在gam中使用某些功能了?真烦人仅供参考,在加载mgcv之后加载gam时,我收到类似的警告消息-某些对象将从'package:mgcv'中屏蔽。
答案 0 :(得分:2)
如我对your other question的回答所示,您不能使用gam::s
。
但是,您可以告诉R在gam程序包名称空间中评估调用:
library(ISLR)
library(gam)
fit1 <- gam(wage~s(year,4)+s(age,5)+education,data=Wage)
library(mgcv)
gam::gam(wage~s(year,4)+s(age,5)+education,data=Wage)
#errors
fit2 <- eval(quote(gam(wage~s(year,4)+s(age,5)+education,data=Wage)),
envir = asNamespace("gam"))
#works
all.equal(coef(fit1), coef(fit2))
#[1] TRUE