防止 plot.gam 生成图形。

5
说,我有一个类似于这样的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))),但那似乎没用。有没有一种简单的方法可以在不将不需要的图输出到文件的情况下完成这项工作?


通常情况下,基本的plot函数将创建一个给定数据的图形。任何可以让你关闭绘图的方法都是例外而不是规则。 - Hong Ooi
1个回答

11

好的,我在发布这篇文章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

太好了!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接