Dribble в R: как дублировать все операции ввода-вывода в файл?

Есть ли в R что-то вроде функции Common Lisp DRIBBLE или команды Unix?

В частности, я хочу, чтобы все, что я печатаю, и все, что печатает R, мне добавлялось в файл (tee захватывает только стандартный вывод; Я хочу все: ошибки, предупреждения, печать, кошка, мой вклад).

Я нашел 10-летнее сообщение на эту тему, которое предлагает слабую версию этого (оно не фиксирует вывод cat/print).

Стандартный приемник функции только захватывает (не дублирует) вывод R; и это не захватывает мой вклад.

Есть ли способ лучше?

2 ответа

Решение

Посмотрите на txtStart функция (и связанные функции) в пакете TeachingDemos. Я думаю, что он делает все, что вы хотите, кроме захвата ошибок (и TaskCallback Система в R внутренностях должна быть обновлена ​​для того, чтобы это произошло).

Другой вариант - запустить R внутри другой среды, такой как ESS (внутри Emacs) (есть и другие, но я менее знаком с ними). Затем все фиксируется в редакторе / буфере и может быть сохранено в файл.

Обратите внимание, что sink функция имеет split аргумент, который работает как tee чтобы показать вывод на экране, а также скопировать его в файл, но он по-прежнему только выводит, а не вводит команды.

Вы, вероятно, хотите sink() -- увидеть help(sink) Например.

Другие вопросы по тегам