r suppress-warnings

suprimir los mensajes mostrados por "imprimir" en lugar de "mensaje" o "advertencia" en R



suppress-warnings (2)

Muchos de los paquetes de R con los que trabajo involucran funciones que dan todos sus mensajes y advertencias a través de comandos para imprimir () llamadas en lugar de comandos para mensaje () o advertencia (). Me gustaría poder silenciar los indicadores de progreso de estas funciones, etc., pero el estándar supressWarnings () o supressMessages no lo hace. ¿Hay alguna manera de suprimir la impresión?

Por ejemplo:

silly_developer_function <- function(x){ print("Thanks for using my function!!") if(is(x, "numeric")) print("warning, x should be a character") x }

Me gustaría tener una función simple deletePrint () que podría envolver alrededor de una llamada a esta función que suprimiría la advertencia y los mensajes inútiles (pero aún así imprimir el valor devuelto).


Bueno, esos paquetes son buggy para empezar. El uso de print() para cualquier cosa que no sea un efecto secundario en print implementaciones de print es un error grave.

Dicho esto, simplemente puede usar capture.output() para recopilar la salida de dicho código en lugar de imprimirlo. Así que por lo anterior sería

capture.output(x <- silly_developer_function(...)) print(x)


Otra forma pirata es anular la función de print predeterminada. Afectará algunas funciones, como la impresión del cuerpo de funciones, pero los objetos con sus propios métodos de impresión aún se devuelven como de costumbre.

print <- function(...) {} > silly_developer_function("a") [1] "a" > silly_developer_function(1) [1] 1