Что такое knitr-эквивалент `R CMD Sweave myfile.rnw`?

Что такое knitr- эквивалент командной строки R CMD Sweave myfile.rnw?

4 ответа

Решение

Общее решение (работает независимо от версии R):

Rscript -e "library(knitr); knit('myfile.Rmd')"

С R 3.1.0, R CMD Sweave начал поддерживать не-Sweave документы (хотя название команды звучит немного странно), и единственное, что вам нужно сделать, это указать механизм виньетки в вашем документе, например

%\VignetteEngine{knitr::knitr}

Чтобы увидеть возможные виньетированные двигатели в knitr, используйте

library(knitr)
library(tools)
names(vignetteEngine(package = 'knitr'))
# "knitr::rmarkdown" "knitr::knitr" "knitr::docco_classic" "knitr::docco_linear"

У меня есть скрипт knitme.R:

library(knitr)
render_html()
source("hooks.R") # mods to defaults
inFile = commandArgs(trailingOnly=TRUE)[1]
outFile = commandArgs(trailingOnly=TRUE)[2]
knit(inFile,output=outFile)

так что я могу тогда сделать

Rscript knitme.R $SOURCE $TARGET

куда $SOURCE а также $TARGET по мере необходимости.

Вы также можете интегрировать это в MakeИтак, у вас было правило, что все, что вам нужно было сделать, это:

make myfile.html

и это пошло бы к myfile.Rhtml и создайте файл HTML. Отрегулируйте, чтобы сделать PDF из.Rnw

Я использую его с SCons вместо Make, поэтому у меня есть файл Sconscript, который немного сложнее (отчасти потому, что я только начал учиться использовать SCons, поэтому он может быть немного хитрым)

env=Environment()
bld = Builder(action = '/usr/bin/Rscript knitme.R $SOURCE $TARGET',
              suffix='.html',
              src_suffix='Rhtml')
env.Append(BUILDERS = {'Knit' : bld})
env.Knit(source='test.Rhtml',target='test.html')

Тогда все, что мне нужно сделать, это:

scons test.html

и я получаю test.html построен из test.Rhtml если test.Rhtml изменился

Это все часть Sconstruct файл, который создает весь веб-сайт и копирует его на сервер, основываясь на всевозможных других зависимостях.

Дрифтинг не по теме сейчас...

Чтобы добавить к другим ответам, если вы хотите связать / визуализировать файл и открыть вывод, все в одной строке вы можете использовать:

Rscript -e "rmarkdown::render('file.Rmd')" & open file.pdf

Я предпочитаю делать все это в одной строке, потому что проще использовать команду Vim многократного использования.

Вы также можете заменить open с конкретным приложением, если вы хотите использовать вашу систему не по умолчанию. Я склонен использовать это, если я нахожусь в Windows и хочу использовать Суматру, чтобы перезаписать вывод PDF, который в данный момент открыт (так что мне не нужно каждый раз закрывать его).

R CMD knit file.Rmd

является прямым эквивалентом R CMD Sweave file.Rmd

В последнее время в rmarkdown и knitr есть расширенные функции для такой грязной работы. Для слайдов я использовал заголовок YML Rmarkdown для обозначения предполагаемого формата вывода, а командная строка является базовой, как

R -e "library(rmarkdown); render(\"file.Rmd\")"
Другие вопросы по тегам