How to Replicate Knit HTML in a Command Line

How to replicate Knit HTML in a command line?

The documentation tells us:

If you are not using RStudio then you simply need to call the rmarkdown::render function, for example:

rmarkdown::render("input.Rmd")

Note that in the case using the “Knit” button in RStudio the basic mechanism is the same (RStudio calls the rmarkdown::render function under the hood).

In essence, rmarkdown::render does a lot more setup than knitr::knit2html, although I don’t have an exhaustive list of all differences.

The most flexible way of rendering the output is, at any rate, to supply your own stylesheet to format the output according to your wishes.

Please note that you need to set up Pandoc manually to work with rmarkdown::render on the command line.


That said, here are two remarks that would improve the knitr::knit2hmtl output, and that are superior to using rmarkdown::render in my opinion:

  • To include the title, use a Markdown title tag, not a YAML tag:

    # My title
  • To format tables, don’t use the raw kable function. In fact, this is also true when using rmarkdown::render: the alignment of the table cells is completely off. Rmarkdown apparently uses centering as the default alignment but this option is almost never correct. Instead, you should left-align text and (generally) right-align numbers. As of this writing, Knitr cannot do this automatically (as far as I know) but it’s fairly easy to include a filter to do this for you:

    ```{r echo=FALSE}
    library(pander)

    # Use this option if you don’t want tables to be split
    panderOptions('table.split.table', Inf)

    # Auto-adjust the table column alignment depending on data type.
    alignment = function (...) UseMethod('alignment')
    alignment.default = function (...) 'left'
    alignment.integer = function (...) 'right'
    alignment.numeric = function (...) 'right'

    # Enable automatic table reformatting.
    opts_chunk$set(render = function (object, ...) {
    if (is.data.frame(object) ||
    is.matrix(object)) {
    # Replicate pander’s behaviour concerning row names
    rn = rownames(object)
    justify = c(if (is.null(rn) || length(rn) == 0 ||
    (rn == 1 : nrow(object))) NULL else 'left',
    sapply(object, alignment))
    pander(object, style = 'rmarkdown', justify = justify)
    }
    else if (isS4(object))
    show(object)
    else
    print(object)
    })
    ```

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

rmarkdown::render("test.Rmd", "html_document")

How to convert R Markdown to HTML? I.e., What does Knit HTML do in Rstudio 0.96?

Put Sys.sleep(30) in a chunk and you will see clearly what commands are called by RStudio. Basically they are

  1. library(knitr); knit() to get the markdown file;
  2. RStudio has internal functions to convert markdown to HTML;

The second step will be more transparent in the next version of the markdown package. Currently you can use knitr::knit2html('your_file.Rmd') to get a similar HTML file as RStudio gives you.


Update on 2019/09/17: The above answer applies to RStudio v0.96 (in the year 2012). Now R Markdown is compiled through rmarkdown::render(), which uses Pandoc instead of the retired R package markdown. See the post Relationship between R Markdown, Knitr, Pandoc, and Bookdown for more details.

Knit2html not replicating functionality of Knit HTML button in R Studio

So it turns out that this was an artifact of cache=TRUE -- the HTML file was not changed because everything was cached.

How can I knit a Rmarkdown file into a html file which embeds plots?

What is the equivalent commands to RStudio's "knit to html" button?

Submit your output in a YAML header and then use

rmarkdown::render("Your-RMD-file.Rmd")

Or see the documentation for the render function and their arguments.

call RMarkdown on command line using a.R that is passed a file

It's not entirely clear what you are trying to do. It seems like you have a text file which has to be converted to an Rmd by an R script (why isn't it just an Rmd to begin with?) and then you want to render the Rmd. You can do this by running these commands in your terminal:

Rscript Graphs.R
Rscript -e "rmarkdown::render('output_file.Rmd')"

The first command runs the Graphs.R file which presumably generates output_file.Rmd. The second command runs a one-liner which knits output_file.Rmd into output_file.html.

If you want to read command line arguments in an R file, try ?commandArgs.

args <- commandArgs(trailingOnly = TRUE)

Also see this Stack Overflow question.

Function to create plot and knit to HTML in RMarkdown not working

Running render on a document does the same thing as knit to html. That includes running all the R code in the document.

But you shouldn't put render in the document itself - you've created a recursive loop because you call render on the document, which runs the code on the document, which calls render on the document, which runs the code in the document....

Remove the render call from your document, instead put it in a separate R script. Then, running that script will render the document.



Related Topics



Leave a reply



Submit