the - ¿Qué es una línea de comando ordenada equivalente al Knit HTML de RStudio?
r notebook (2)
¿Qué es una línea de comando ordenada equivalente al Knit HTML de RStudio? Dado un archivo .Rmd
, puede usar RStudio para tejer archivos .html
, .docx
y .pdf
utilizando Knitr. Sería genial cambiar este proceso completamente a la línea de comando. Mi enfoque hasta ahora:
Rscript -e "library(knitr); knit(''test.Rmd'')" # This creates test.md
pandoc test.md >> test.html
Esto funciona bien, pero el test.html
resultante no viene con la misma marca que en RStudio. ¿Alguna sugerencia sobre cómo se debe .Rmd
mejor los archivos .Rmd
a .html
través de la línea de comandos y terminar con un bonito .html
?
Pregunta adicional: ¿Cuál sería la mejor solución de línea de comandos para .pdf
o .docx
?
Siguiendo con la respuesta aceptada, he redactado un script bash llamado "knitter" que hará todo lo necesario, todo lo que el usuario debe hacer es ingresar: ./knitter file.Rmd file.html
o ./knitter file.Rmd file.pdf
.
El guión está abajo:
#!/bin/sh
### Test usage; if incorrect, output correct usage and exit
if [ "$#" -gt 2 -o "$#" -lt 2 ]; then
echo "********************************************************************"
echo "* Knitter version 1.0 *"
echo "********************************************************************"
echo -e "The ''knitter'' script converts Rmd files into HTML or PDFs. /n"
echo -e "usage: knitter file.Rmd file.{pdf,html} /n"
echo -e "Spaces in the filename or directory name may cause failure. /n"
exit
fi
# Stem and extension of file
extension1=`echo $1 | cut -f2 -d.`
extension2=`echo $2 | cut -f2 -d.`
### Test if file exist
if [[ ! -r $1 ]]; then
echo -e "/n File does not exist, or option mispecified /n"
exit
fi
### Test file extension
if [[ $extension1 != Rmd ]]; then
echo -e "/n Invalid input file, must be a Rmd-file /n"
exit
fi
# Create temporary script
# Use user-defined ''TMPDIR'' if possible; else, use /tmp
if [[ -n $TMPDIR ]]; then
pathy=$TMPDIR
else
pathy=/tmp
fi
# Tempfile for the script
tempscript=`mktemp $pathy/tempscript.XXXXXX` || exit 1
if [[ $extension2 == "pdf" ]]; then
echo "library(rmarkdown); rmarkdown::render(''"${1}"'', ''pdf_document'')" >> $tempscript
Rscript $tempscript
fi
if [[ $extension2 == "html" ]]; then
echo "library(rmarkdown); rmarkdown::render(''"${1}"'', ''html_document'')" >> $tempscript
Rscript $tempscript
fi
library(rmarkdown)
rmarkdown::render("test.Rmd", "html_document")