Сохраните вывод r-скрипта, включая его команды.

Я хочу сохранить часть вывода моего r-скрипта, включая команды, в текстовый файл. Я знаю sink(), но он не включает команды, или я не смог найти для этого конкретную опцию.

Есть ли возможность захвата команд и их вывода внутри сеанса r. Просто написать Rmd или захватить вывод в консоли — это не решение на данный момент.


person Markus Graf    schedule 28.01.2016    source источник
comment
Возможный дубликат Как написать программу R, которая копирует исходный код в файл?   -  person nicola    schedule 28.01.2016
comment
Я не знаю, что вы хотите сделать с текстовым файлом, но, возможно, вам будет интересен Knitr.   -  person Roland    schedule 28.01.2016


Ответы (2)


Вероятно, вы ищете пакет TeachingDemos. Документацию можно найти здесь.

Пример:

library(TeachingDemos)

txtStart("test.txt")
# Your code
txtStop()

Это должно записать как ввод, так и вывод вашей команды в файл с именем test.txt.

person Patrick Kostjens    schedule 28.01.2016
comment
Это почти то, что я искал. Спасибо. Было бы неплохо включить комментарии к коду, а не только обычные текстовые комментарии. Есть ли возможность расширить библиотеку такой функцией? Просто перезапишите функцию txtComment(...), которая ведет к тому, что R2txt не найден. - person Markus Graf; 28.01.2016
comment
@MarkusGraf, в настоящее время это не представляется возможным. Функция txtComment кажется тем, что вы ищете, однако вы не должны перезаписывать ее. Вместо этого вы должны вызывать его с текстом комментария в качестве аргумента. Таким образом, это потребует некоторых изменений в вашем коде, но может достичь того, чего вы хотите. - person Patrick Kostjens; 28.01.2016

Если вы работаете в интерактивном режиме, вот одна идея. Именно для этой конкретной проблемы я создал функцию sinkstart() в обряд пакет. По сути, это создает всплывающий виджет tcl/tk, в который вы можете писать команды и выводить их. Вот скриншот, чтобы дать вам представление:

введите здесь описание изображения

Есть только две соответствующие функции: sinkstart() запускает приемник; sinkstop() выключает его. Вы можете переключаться вперед и назад для выборочной записи в виджет. Затем вы можете просто сохранить содержимое, щелкнув правой кнопкой мыши или нажав сочетание клавиш.

person Thomas    schedule 28.01.2016