生成图表时抑制ggpairs消息

11

ggpairs用于生成绘图时会输出进度条和估计的剩余时间,这对于交互式使用很好,因为某些计算可能需要几秒钟。但是在制作文档(如R笔记本)时,这些打印信息最终出现在报告中。 ggpairs曾经有一个布尔值verbose选项,但现在已弃用。是否有替代方案?我似乎找不到。

要查看消息,请尝试:

library(GGally) ggpairs(mtcars, columns = c("mpg", "cyl", "hp", "disp", "am", "qsec"))

在文档中,它会包含:

plot: [1,1] [==-------------------------------------------] 4% est: 0s

plot: [1,2] [====-----------------------------------------] 8% est: 6s

plot: [1,3] [=====----------------------------------------] 12% est: 5s

plot: [1,4] [=======--------------------------------------] 16% est: 5s

等等


在代码块选项中,你可以使用 message = FALSE 吗? - Richard Telford
我尝试了 message = FALSE, warnings = FALSE 但它们仍然出现。 - adatum
我也尝试过用 suppressMessages() 包装代码。但是也没有起作用。 - adatum
尝试使用 progress = FALSE。它似乎是由 ggmatrix_gtable 调用的,该函数接受一个布尔型 progress 参数。我不确定(还没有测试)是否会传递足够深的 progress = F - Gregor Thomas
@Gregor 在代码块选项中设置 progress = FALSE 也没有起作用。 - adatum
不是在块选项中,而是在ggpairs调用中。但是,它不起作用。 - Gregor Thomas
3个回答

10
progress = FALSE 参数将在打印 ggpairs 绘图时起作用。
ggp = ggpairs(mtcars, columns = c("mpg", "cyl", "hp", "disp"))
print(ggp, progress = F)  # no progress bar
print(ggp)  # progress bar

这可能也取决于你的编程方式。调用进度条的函数是ggmatrix_gtable,默认值为

 progress = interactive() && (pm$ncol * pm$nrow) > 15

因此,在非交互式会话中,默认情况下不会打印进度条。

谢谢,这个可行!关于编程,我正在使用RStudio中最近添加的“预览笔记本”按钮。 - adatum

7

print函数中的'progress'参数即将被弃用。

它可以传递给ggpairs本身:

library(GGally)
ggpairs(mtcars, 
        columns = c("mpg", "cyl", "hp", "disp", "am", "qsec"),
        progress = FALSE)

不带进度的ggpairs RStudio截图:

没有进度输出的ggpairs


4
如果您熟悉dplyr语法,那么下面的管道可能是最优雅的,它不需要保存中间变量。
mtcars %>% 
  ggpairs(columns = c("mpg", "cyl", "hp", "disp", "am", "qsec")) %>%
  print(progress = F)

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