yihui with opts_chunk name false example chunk and r sweave knitr

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"

¿Cuál es el knitr equivalente a la línea de comandos de R CMD Sweave myfile.rnw ?


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/")"