#r #stata
#r #печать
Вопрос:
Предположим, у меня есть такая функция, как:
ff <- function(x) {
cat(x, "n")
x^2}
И запустите его по:
y <- ff(5)
# 5
y
# [1] 25
Мой вопрос заключается в том, как отключить или скрыть 5
напечатанное из cat(x, "n")
таких:
y <- ff(5)
y
# [1] 25
Комментарии:
1. вы могли бы добавить
verbose= T/F
параметр иif
блок
Ответ №1:
Вы можете использовать capture.output
с invisible
> invisible(capture.output(y <- ff(2)))
> y
[1] 4
или sink
> sink("file")
> y <- ff(2)
> sink()
> y
[1] 4
Ответ №2:
Вот хорошая функция для подавления вывода от cat()
Хэдли Уикхема:
quiet <- function(x) {
sink(tempfile())
on.exit(sink())
invisible(force(x))
}
Используйте это так:
y <- quiet(ff(5))
Источник: http://r.789695.n4.nabble.com/Suppressing-output-e-g-from-cat-td859876.html
Комментарии:
1. Это именно то, что я искал. Спасибо!
2.
sink('/dev/null')
может быть, немного предпочтительнее работать на mac / linux.
Ответ №3:
Вы также должны проверить purrr::quietly()
.
ff <- function(x) {
cat(x, "n")
x^2
}
purrr::quietly(ff)(7)$result
#> [1] 49
Создано 2020-09-10 пакетом reprex (версия 0.3.0)