Ответ 1
Используйте invisible
, например:
invisible(FUN("hello"))
hello 1
hello 2
hello 3
Вы можете обернуть его вокруг вызова lapply
в функции, чтобы сделать его более аккуратным.
Когда я использую lapply
и печатаю на консоль, он печатает нежелательные [[i]]NULL
, хотя я хочу, чтобы сообщение предназначалось для печати на консоли. Я пробовал suppressWarnings
и suppressMessages
, но они не удаляют нежелательного преступника. Я искал lapply
и не вижу аргумента, чтобы его отключить. Это более эстетично, так как это не мешает функции. Я не против многосторонней печати на консоль, если пользователь может отключить ее, если захочет.
Здесь примерная функция, вывод и то, что я хотел бы получить:
Пример функции:
FUN <- function(x) {
FUN2 <- function(z) message(z)
lapply(1:3, function(i) FUN2(paste(x, i)))
}
FUN("hello")
Вывод:
hello 1
hello 2
hello 3
[[1]]
NULL
[[2]]
NULL
[[3]]
NULL
Желаемый результат:
hello 1
hello 2
hello 3
Используйте invisible
, например:
invisible(FUN("hello"))
hello 1
hello 2
hello 3
Вы можете обернуть его вокруг вызова lapply
в функции, чтобы сделать его более аккуратным.
Используйте l_ply
из plyr:
library(plyr)
FUN <- function(x) {
FUN2 <- function(z) message(z)
l_ply(1:3, function(i) FUN2(paste(x, i)))
}
FUN("hello")
Я обнаружил, что ответ там (с invisible(capture.output())
был лучшим ответом на мои проблемы с печатью выходов на консоль,
Подавить вывод теста стационарности, который печатается на экране. Также в контексте testthat expect_output
очень полезен.