Что такое эквивалент 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, поэтому он может быть немного crufty)
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 и хочу использовать Sumatra для перезаписи вывода PDF, который в настоящее время открыт (поэтому мне не нужно не забудьте закрыть его каждый раз).
R CMD knit file.Rmd
является прямым эквивалентом файла R CMD Sweave.Rmd
в последнее время, увеличенные функции в rmarkdown и knitr для этого вида грязной работы. Для слайдов я использую заголовок RMARKDOWN YAML для обозначения предполагаемого формата вывода, а командная строка является базовой, например
R -e "library(rmarkdown); render(\"file.Rmd\")"