What is a neat command line equivalent to RStudio's Knit HTML? Given an .Rmd
file, you can use RStudio to knit .html
, .docx
and .pdf
files using Knitr. It would be great to shift this process completely to the command line. My approach so far:
Rscript -e "library(knitr); knit('test.Rmd')" # This creates test.md pandoc test.md >> test.html
This works fine, but the resulting test.html
does not come with the same pretty make over as in RStudio. Any suggestions how one should best knit .Rmd
files to .html
via the command line, and end up with a pretty .html
?
Extra question: What would be the best command line solution for .pdf
or .docx
?
To transform your markdown file into an HTML, PDF, or Word document, click the “Knit” icon that appears above your file in the scripts editor. A drop down menu will let you select the type of output that you want. When you click the button, rmarkdown will duplicate your text in the new file format.
Right-click the file and click Open With -> R Studio. Then go to R Studio, and click Knit in the upper left corner. Then another window will automatically pop up with a cleaned-up version of the homework assignment. That's it!
No Knit HTML button This means that RStudio doesn't understand your document is supposed to be an RMarkdown document, often because your file extension is . txt. To fix this, go to the Files tab (lower right corner, same pane as Plots and Help) and select the checkbox next to your document's name.
Via RStudio When you open an R Markdown document in RStudio, you'll see a “Knit HTML” button just above the document.
rmarkdown::render("test.Rmd", "html_document")
Following up on the accepted answer, I've drafted a bash script called "knitter" that will do everything needed, all the user needs to do is input: ./knitter file.Rmd file.html
or ./knitter file.Rmd file.pdf
.
The script is below:
#!/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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With