阻止plot.gam生成一个数字

时间:2017-09-21 13:40:58

标签: r gam mgcv

说,我有一个看起来像这样的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))),但这似乎不起作用。是否有一种简单的方法可以在不将不需要的图形输出到文件的情况下执行此操作?

1 个答案:

答案 0 :(得分:4)

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

# 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

邦扎!