Deje de lapear desde la impresión a la consola
(3)
Cuando uso lapply
e lapply
en la consola, se imprime no deseado [[i]]NULL
aunque quiero que el mensaje deseado se imprima en la consola. He intentado suppressWarnings
y suppressMessages
pero estos no eliminan al delincuente no deseado. Busqué lapply
y no veo una discusión para silenciarla. Esto es más estético ya que no interfiere con la función. No me opongo a la impresión alternativa en la consola siempre que el usuario pueda apagarla si lo desea.
Aquí hay una función de ejemplo, el resultado y lo que me gustaría obtener:
Función de muestra:
FUN <- function(x) {
FUN2 <- function(z) message(z)
lapply(1:3, function(i) FUN2(paste(x, i)))
}
FUN("hello")
Salida:
hello 1
hello 2
hello 3
[[1]]
NULL
[[2]]
NULL
[[3]]
NULL
Salida deseada:
hello 1
hello 2
hello 3
Encontré que la respuesta allí (con invisible(capture.output())
era una mejor respuesta a mis problemas de impresión de salidas a la consola, Suprime la salida de la prueba de estacionariedad que se imprime en la pantalla . También en el contexto de prueba de que el expect_output
es muy útil.
Use invisible
, por ejemplo:
invisible(FUN("hello"))
hello 1
hello 2
hello 3
También puede envolver la llamada de solicitud en la función para que esté más ordenada.
Use l_ply
de plyr:
library(plyr)
FUN <- function(x) {
FUN2 <- function(z) message(z)
l_ply(1:3, function(i) FUN2(paste(x, i)))
}
FUN("hello")