Por que o ggplot não permite suprimir as mensagens geradas por seus geoms?

ogeom_density_ridges geom doggridges o pacote criou ridgelines e, se uma largura de banda não for especificada, ele tenta encontrar um valor razoável. Ele então usa obase R message para relatar esse valor (consultehttps://twitter.com/ClausWilke/status/921363157553172480)

obase Função RsuppressMessages A função foi projetada para suprimir essas mensagens. Por exemplo, este código gera uma mensagem:

message('This is a message');

E esse código não gera nada:

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

No entanto, por algum motivo, a supressão de mensagens parece, suprimida quando esse geom é adicionado a um ggplot. O código a seguirfaz ainda produz uma mensagem:

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

(Especificamente "Picking joint bandwidth of 319".)

Por que é isso? Fazggplot fazer algo para garantir que as mensagens sejam enviadas independentemente da especificação dos usuários? Ou esse comportamento é realmente sensato que eu simplesmente não conheço?

Ao gerar relatórios RMarkdown, a opção chunkmessage pode ser definido comomessage=FALSE, que suprime todas as mensagens no nível de renderização. E como esse é o meu caso de uso, meu problema está resolvido.

E como Claus Wilke, o autor doggridges sugerido, você sempre pode definir obandwidth manualmente para evitar a mensagem (https://twitter.com/ClausWilke/status/921361195231215616)

Masporque nãosuppressMessages suprimir a mensagem em primeiro lugar?

É esse comportamento esperado que eu simplesmente não conheço?

questionAnswers(1)

yourAnswerToTheQuestion