显然,mgcv::s(..., bs = "re")
装入NSM3
软件包时导致错误。下面是一个示例。
加载mgcv
程序包并创建下面的示例中使用的数据框。
library("mgcv") # version 1.8-24
d <- data.frame(
y = rnorm(100),
x = rnorm(100),
f = sample(letters[1:10], 100, replace = TRUE)
)
以下预期工作:
gam(y ~ s(x) + s(f, bs = "re"), data = d)
现在,加载NSM3
程序包并运行相同的代码。
library("NSM3") # version 1.12
gam(y ~ s(x) + s(f, bs = "re"), data = d)
然后我得到以下错误:
Error in model.matrix.formula(form, data) : data must be a data.frame
(对我来说)有趣的是,即使在detach
装入NSM3
程序包之后,我仍然收到相同的错误。
detach("package:NSM3", unload = TRUE)
gam(y ~ s(x) + s(f, bs = "re"), data = d) # This results in the same error.
此外,即使没有显式加载NSM3
程序包,也会出现此问题。在包中使用带有三个冒号(:::
)的函数足以引起问题。
NSM3:::pSDCFlig(d$y, d$f, method = "Asymptotic")
gam(y ~ s(x) + s(f, bs = "re"), data = d) # Same error
该问题似乎是s(..., bs = "re")
特有的,因为s()
本身仍然有效。
gam(y ~ s(x), data = d) # No error
究竟是什么导致此错误,有什么办法可以防止此错误,同时仍然允许使用NSM3
软件包中包含的功能?