加载NSM3软件包时,mgcv :: s(...,bs =“ re”)导致错误

时间:2018-10-21 05:15:40

标签: r mgcv

显然,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软件包中包含的功能?

0 个答案:

没有答案