2015-02-13 11 views
18

С одним файлом разметки R я хотел бы создать различные возможные выходные документы PDF, в которых имя выходного файла должно быть определено внутри документа. Есть ли способ убедить уценку манипулировать выходным именем файла таким образом? В идеале я хотел бы передать имя файла r chunk.R Markdown - имя переменной с переменным

+0

Вы могли бы оставить сообщение? вы хотите назвать файлы «динамически»? 'paste0 (" file_ ", x,". pdf ")?' x может быть датой или именем набора данных – rmuc8

+0

До сих пор я использовал RStudio, выполняя команду knit без фактического изучения более подробной информации. Но мне следовало бы поближе познакомиться с ильясским ответом, звучит как более понятный подход. – Sosel

ответ

23

Вы можете сохранить простоту использования Knit кнопку RStudio и воспроизводимости заголовка YAML, используя недокументированные knit крюк, чтобы пересмотреть то, что делает кнопка (функция по умолчанию под названием является rmarkdown::render). Параметр output_file функции рендеринга указывает имя файла, поэтому, устанавливая его, вы переопределяете стандартное поведение с использованием того же префикса, что и имя входного файла.

например. чтобы всегда выходной файл с именем myfile.pdf

knit: (function(inputFile, encoding) { rmarkdown::render(inputFile, encoding = encoding, output_file = file.path(dirname(inputFile), 'myfile.pdf')) }) 

Функция может быть анонимным один лайнер, а также импортировать из пакета, как видно here с slidify.

Вы можете установить свои собственные заголовки YAML (я не знаю, если это вообще рекомендуется), доступный под rmarkdown::metadata$newheader, но они не кажутся доступными в пределах такого рода функций, насколько я могу видеть.

Что касается передачи имени файла из R-фрагмента ... если вы имеете в виду фрагменты кода ниже заголовка YAML, из моего опыта я не думаю, что это возможно (?). Заголовки могут содержать встроенные команды R (одна обратная сторона - в комплекте, начиная с r), но, похоже, не для этой функции крючка.

Связанные:

+0

Ошибка в rmarkdown :: metadata $ title <- "My Title": объект 'rmarkdown' не найден – jzadra

+0

@yihuixie, могу ли я передать параметры $ независимо от имени выходного файла? Моя отметка использует данные params $ для сбора соответствующего файла данных, но похоже, что это не работает в вашем однострочном лайнере - 'params $ data not found'. Я могу передать все, что захочу, из сценария с помощью rrmdown :: render (params = list (data = "Oct2017data"), output_file = "Oct2017_analysis.html") ', но, очевидно, я хочу иметь возможность набирать его только один раз. – StasK

14

Это довольно много, что я делаю:

rmarkdown::render('my_markdown_report.Rmd', 
        output_file = paste('report.', Sys.Date(), 
             '.pdf', sep='')) 

У меня есть три сценария - один тянет данные и обработать его, второй созданные диаграммы & таблицы для отчета. Третий создает отчет, основанный на файле уценки. Код вы видите выше, является частью третьего сценария

+0

До сих пор я использовал команду RStudios knit для компиляции некоторого файла уценки.Если я правильно вас понимаю, вы создаете фактический файл разметки с помощью R-команд и даже управляете вязанием уценки с помощью R-команд? До сих пор я не знал об этом подходе, но я буду более пристально смотреть. До сих пор я также готовил данные и обрабатывал их в первом скрипте, но уже на втором этапе я вручную создал файл уценки, помещая, например, различные источники данных в некоторый отчет. – Sosel

+0

Да. файл markdown - отдельный скрипт сам по себе, он одновременно считывает диаграммы и таблицы мест данных. Он вызывается, однако, из внешнего скрипта - вы также можете запустить/выполнить его из Rstudio и создать файл с тем же именем. Однако я называю это из отдельного сценария и после того, как rmarkdown создает pdf-файл, который копируется в разные места – ilya

2

После того, о чем писал @ilya, эта веб-страница имеет отличный пример, демонстрирующий то, что они описывают, а именно, как создавать несколько воспроизводимых отчетов из того же документа .Rmd :

http://www.reed.edu/data-at-reed/software/R/markdown_multiple_reports.html

Веб-страница использует два сценария, один R сценарий и один сценарий Rmarkdown для создания нескольких отчетов. Я использовал его как шаблон для своей собственной работы и счел его очень полезным.

Смежные вопросы