Функция сообщения в R не записывает в текстовый файл / печатает сообщение на стандартный вывод - PullRequest
2 голосов
/ 15 июня 2019

Я пишу текст в консоль R, используя функции print(), cat() and message(). Я хочу собрать результаты консоли в текстовый файл, поэтому я поместил код между парой функций sink(). Конечный код выглядит так:

sink("output_filename.txt") 
print("some text with print function")
cat("some text with cat function")
message("some text with message function")
sink()

Когда я запускаю этот код, print и cat работают, как ожидается, пока message's output writes to console, а не выводят текстовый файл. Почему это происходит и как мне обойти это? Я предпочитаю не заменять функцию сообщения альтернативами.

1 Ответ

1 голос
/ 15 июня 2019

подобно jogo , уже упомянутому в комментарии, message() отправляет на stdeer вместо stdout.Вы можете изменить это, используя sink(stdout(), type = "message")

sink("output_filename.txt") 
sink(stdout(), type = "message")
print("some text with print function")
cat("some text with cat function\n")
message("some text with message function")
sink()

из документальный фильм из sink():

Нормальный выход R (на стандартный вывод) отклоненпо умолчанию type = "output".Только подсказки и (большинство) сообщений продолжают появляться на консоли.Сообщения, отправляемые в stderr () (включая сообщения из сообщений, предупреждений и остановок), могут перенаправляться приемником (type = "message") (см. Ниже).

также вы можете изменить его после того, как высделано, так как предупреждения и остановки также изменяются на stdout таким образом

...