Как вы печатаете на stderr
в R
?Как вы печатаете на stderr в R?
Это особенно полезно для сценариев, написанных в Rscript
.
Как вы печатаете на stderr
в R
?Как вы печатаете на stderr в R?
Это особенно полезно для сценариев, написанных в Rscript
.
На самом деле следующие работы для меня:
write("prints to stderr", stderr())
write("prints to stdout", stdout())
Можно ли настроить печать для печати на stderr? ?
Нет, но там, где стандартный вывод идет в контролируется раковине(), так что вы можете достичь того же эффекта. R внутренне не имеет представления о том, какой результат исходит от print() (который является не только одним функцией, но и сотнями методов).
Вот более гибкий вариант для отладки/многословной использования в Rscript. Он не только печатает до stderr
по вашему запросу, но также позволяет передавать переменное количество аргументов, типов и т. Д., Например printf
.
v <- function(...) cat(sprintf(...), sep='', file=stderr())
Теперь можно делать такие вещи, как:
v("name: %s age: %d\n", name, age)
т.д.
Это замечательно !!! Для тех, кто не понимает ..., см. Это. Http://stackoverflow.com/questions/3057341/how-to-use-rs-ellipsis-feature-when-writing-your-own-function – myloginid
message('for writing diagnostic info to standard error')
сообщение используется для создания 'простых' диагностических сообщений, которые не являются ни предупреждения, ни ошибки, но тем не менее представляются в качестве условий. В отличие от предупреждений и ошибок, окончательная новая строка рассматривается как часть сообщения и не является обязательной. Обработчик по умолчанию отправляет сообщение в соединение stderr().
Это на Linux, с R 2.8.1 (с использованием Rscript) – Frank
Этот код также работает в Windows. Для большего контроля форматирования вы можете использовать cat вместо записи. –
FWIW, это ограничено тем, что оно работает только в том случае, если первый аргумент может выводиться 'cat'. Существуют классы, которые требуют, чтобы 'print' работал, где вы должны использовать' sink', как говорит Galwegian ниже. – Harlan