¿Por qué ggplot no permite la supresión de mensajes generados por sus geoms?

losgeom_density_ridges geom de laggridges paquete creó crestas, y si no se especifica un ancho de banda, intenta encontrar un valor razonable. Luego usa elbase R message función para informar ese valor (verhttps://twitter.com/ClausWilke/status/921363157553172480)

losbase Función RsuppressMessages La función está diseñada para suprimir dichos mensajes. Por ejemplo, este código genera un mensaje:

message('This is a message');

Y este código no genera nada:

suppressMessages(message('This is a message'));

Sin embargo, por alguna razón, la supresión de mensajes parece, um, suprimida cuando esta geom se agrega a un ggplot. El siguiente códigohace todavía produce un mensaje:

require('ggplot2');
require('ggridges');
suppressMessages(ggplot(Orange, aes(x=age,y=Tree)) + geom_density_ridges());

(Específicamente, "Picking joint bandwidth of 319".)

¿Por qué es esto? Haceggplot hacer algo para garantizar que los mensajes lleguen independientemente de las especificaciones de los usuarios? ¿O es este comportamiento sensato del que no sé nada?

Al generar informes RMarkdown, la opción de fragmentomessage se puede establecer enmessage=FALSE, que suprime todos los mensajes en el nivel de representación. Y como ese es mi caso de uso, mi problema está resuelto.

Y como Claus Wilke, el autor delggridges paquete, sugerido, siempre puede configurar elbandwidth de forma manual para evitar el mensaje (https://twitter.com/ClausWilke/status/921361195231215616)

Peropor qué no lo hacesuppressMessages suprimir el mensaje en primer lugar?

¿Es este comportamiento esperado del que no sé nada?

Respuestas a la pregunta(1)

Su respuesta a la pregunta