防止 plot.gam 生成数字

Prevent plot.gam from producing a figure

说,我有一个看起来像这样的 GAM:

# Load library
library(mgcv)

# Load data
data(mtcars)

# Model for mpg
mpg.gam <- gam(mpg ~ s(hp) + s(wt), data = mtcars)

现在,我想使用 ggplot2 绘制 GAM。因此,我使用 plot.gam 生成我需要的所有信息,如下所示:

foo <- plot(mpg.gam)

这也会生成不需要的数字。 (是的,我意识到我在抱怨绘图函数绘制了一些东西......)当以同样的方式使用 visreg 时,我只是指定 plot = FALSE 来抑制这个数字,但是 plot.gam好像没有这个选项。我的第一个想法是 invisible 可能会完成这项工作(例如,invisible(foo <- plot(mpg.gam))),但这似乎没有用。有没有一种简单的方法可以在不将不需要的图形输出到文件的情况下执行此操作?

好的,所以我在发帖 5 分钟后终于弄明白了。 select 可以选择绘制哪个项(例如,select = 1 是第一项,select = 2 是第二项),尽管默认行为是绘制所有项。但是,如果我使用 select = 0 它不会绘制任何内容并且不会给出错误,但 returns 完全相同的信息。看看:

# Load library
library(mgcv)

# Load data
data(mtcars)

# Model for mpg
mpg.gam <- gam(mpg ~ s(hp) + s(wt), data = mtcars)

# Produces figures for all terms
foo1 <- plot(mpg.gam)

# Doesn't produce figures
foo2 <- plot(mpg.gam, select = 0)

# Compare objects
identical(foo1, foo2)

[1] TRUE

大吉大利!