with - ¿Cuál es el equivalente knitr de `R CMD Sweave myfile.rnw`?
n yihui name knitr (4)
La solución general (funciona independientemente de la versión R):
Rscript -e "library(knitr); knit(''myfile.Rmd'')"
Desde R 3.1.0, R CMD Sweave
ha comenzado a admitir documentos que no son Sweave (aunque el nombre del comando suena un poco extraño), y lo único que debe hacer es especificar un motor de viñetas en su documento, por ej.
%/VignetteEngine{knitr::knitr}
Para ver los posibles motores de viñetas en Knitr , use
library(knitr)
library(tools)
names(vignetteEngine(package = ''knitr''))
# "knitr::rmarkdown" "knitr::knitr" "knitr::docco_classic" "knitr::docco_linear"
Para agregar a las otras respuestas, si desea tejer / renderizar el archivo y abrir el resultado todo en una línea, puede usar:
Rscript -e "rmarkdown::render(''file.Rmd'')" & open file.pdf
Prefiero hacerlo todo en una sola línea porque es más sencillo ejecutarlo como un comando Vim reutilizable.
También puede reemplazar open
con una aplicación específica si desea usar el sistema no predeterminado de su sistema. Tiendo a usar esto si estoy en Windows y quiero usar Sumatra para sobreescribir una salida de PDF que está abierta actualmente (así que no tengo que acordarme de cerrarla cada vez).
Tengo un script 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)
entonces puedo hacer
Rscript knitme.R $SOURCE $TARGET
Donde $SOURCE
y $TARGET
son los requeridos.
También podría integrar esto en Make
, por lo que tenía una regla de que todo lo que tenía que hacer era:
make myfile.html
y iría a myfile.Rhtml
y produciría el archivo HTML. Ajuste para hacer PDF desde .Rnw
Lo estoy usando con SCons en lugar de Make, así que tengo un archivo Sconcript que es un poco más complejo (en parte porque recién comencé a aprender a usar SCons, por lo que podría ser un poco complicado)
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'')
Entonces todo lo que necesito hacer es:
scons test.html
y obtengo test.html
creado a partir de test.Rhtml
si test.Rhtml
ha cambiado.
Todo esto es parte de un archivo Sconstruct
que construye un sitio web completo y lo copia en un servidor, basado en todo tipo de otras dependencias.
Fuera de tema ahora ...
R CMD knit file.Rmd
es el equivalente directo al archivo R CMD Sweave.Rmd
Últimamente, hay funciones mejoradas en rmarkdown y knitr para este tipo de trabajo sucio. Para las diapositivas, he estado usando el encabezado YAML de Rmarkdown para designar el formato de salida deseado y la línea de comando es básica, como
R -e "library(rmarkdown); render(/"file.Rmd/")"