Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is a neat command line equivalent to RStudio's Knit HTML?

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?

like image 510
elke Avatar asked Aug 24 '15 13:08

elke


People also ask

How do you knit in html?

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.

How do I get the option to knit in R?

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!

Why can't I knit R markdown?

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.

Where are knit R markdown?

Via RStudio When you open an R Markdown document in RStudio, you'll see a “Knit HTML” button just above the document.


2 Answers

rmarkdown::render("test.Rmd", "html_document") 
like image 167
George Dontas Avatar answered Oct 03 '22 04:10

George Dontas


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 
like image 29
Tyler R. Avatar answered Oct 03 '22 05:10

Tyler R.