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


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

4 56

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 вместо того, чтобы сделать, так что у меня есть 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 изменилось.

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

дрейфует вне темы сейчас...

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

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

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

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

R CMD knit file.Rmd

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

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

R -e "library(rmarkdown); render(\"file.Rmd\")"