代码之家  ›  专栏  ›  技术社区  ›  Dan

防止打印。生成图形的gam

  •  3
  • Dan  · 技术社区  · 7 年前

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

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

    现在,我想用 ggplot2 plot.gam 要产生我需要的所有信息,如下所示:

    foo <- plot(mpg.gam)
    

    这也会生成一个不需要的图形。(是的,我意识到我在抱怨打印函数打印了一些东西…)使用时 visreg 同样,我只想具体说明 plot = FALSE 情节gam公司 似乎没有这个选项。我的第一个想法可能是 invisible 会做这项工作(例如。, invisible(foo <- plot(mpg.gam)) ),但这似乎不起作用。有没有一种简单的方法可以做到这一点,而不输出不需要的数字文件?

    1 回复  |  直到 7 年前
        1
  •  9
  •   Dan    7 年前

    好的,我终于在发布这个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