包中的geom_density_ridges
几何图形ggridges
创建了山脊线,如果没有指定带宽,它会尝试找到一个合理的值。然后它使用base
Rmessage
函数报告该值(参见https://twitter.com/ClausWilke/status/921363157553172480)。
base
R 函数suppressMessages
函数旨在抑制此类消息。例如,此代码输出一条消息:
message('This is a message');
这段代码什么也不输出:
suppressMessages(message('This is a message'));
但是,由于某种原因,当将此几何图形添加到 ggplot 时,消息的抑制似乎被抑制了。以下代码仍然会产生一条消息:
require('ggplot2');
require('ggridges');
suppressMessages(ggplot(Orange, aes(x=age,y=Tree)) + geom_density_ridges());
(具体来说,“ Picking joint bandwidth of 319
”。)
为什么是这样?无论用户的规范如何,是否ggplot
会采取措施确保消息通过?还是我碰巧不知道这实际上是明智的行为?
生成 RMarkdown 报告时,message
可以将 chunk 选项设置为message=FALSE
,这会在呈现级别抑制所有消息。既然这是我的用例,我的问题就解决了。
正如包的作者克劳斯威尔克所ggridges
建议的那样,您始终可以bandwidth
手动设置 of 以避免消息(https://twitter.com/ClausWilke/status/921361195231215616)。
但是为什么不suppressMessages
首先压制消息呢?
这是我碰巧不知道的预期行为吗?