R, knitr & markdown = HTML

July 7, 2012
By

[This article was first published on FishyOperationsCategory Archives: r, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Welcome to this demo of how R code and results can be combined into an HTML report. This entire blogpost was generated by using a combination of R, knitr and markdown.

Beforehand, make sure you have the following libraries installed (latest version);

  • knitr
  • markdown
  • ggplot2 (to run the example script)

Syntax references for markdown can be found here.

Let's make two separate files, a .R file and an .Rmd file.

The .R file

The .R file should be used to load necessary libraries, define and transform data and, possibly, to define the plots beforehand. After a useful comment from Yihui I recommend including the code to define the dataset and create the plot within the .Rmd file. This in order to create a self-contained document that can be reproduced without special instructions. As, and I quote from the comment below: 'a reproducible report should be self-contained and not rely on external objects'.

My .R file looks as follows:

library(knitr)
library(markdown)

#transform the .Rmd to a markdown (.md) file.
knit('r-knitr-markdown.Rmd')

#transform the .md to HTML format
markdownToHTML("r-knitr-markdown.md", "r-knitr-markdown.html",fragment.only = TRUE)

When using the output in a blogpost it is important to set the 'fragment.only' option to TRUE, otherwise it will generate a full-fledged HTML page (HTML tags / CSS / etc.).

In the .Rmd file, the following code is used to start a so called R 'chunk'. A 'chunk' is a place in the .Rmd file where R code will be run and evaluated. An R chunk is defined as follows;

R chunk

Let's try this and check out the result.

# your R code goes here, e.g.
1 + 1
## [1] 2

Let's create a dataset and define a plot for testing purposes.

# define the dataset
dataset <- data.frame(x = seq(1, 100), y = runif(100))

# let's load the ggplot2 library
library(ggplot2)

# define the plot to be used in the final HTML report
graph <- ggplot(dataset, aes(x = x, y = y)) + geom_line(colour = "red")

What if we print the plot thas was defined in the 'graph' variable? This would be the result;

# show the graph
graph

plot of chunk unnamed-chunk-3

There are a bunch of options available to e.g. hide the printout of the R script (echo) or to hide warning messages. Also the size of the graph output can be adjusted. All these option are explained on Yihui's knitr website.

I hope this gives an idea of how R can be used to generate reproducible data analysis reports, easy-to-update business intelligence reports and of course blog posts.

The files used to produce this output can be found here;

The post R, knitr & markdown = HTML appeared first on FishyOperations.

To leave a comment for the author, please follow the link and comment on their blog: FishyOperationsCategory Archives: r.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.



If you got this far, why not subscribe for updates from the site? Choose your flavor: e-mail, twitter, RSS, or facebook...

Tags: , ,

Comments are closed.

Search R-bloggers

Sponsors

Never miss an update!
Subscribe to R-bloggers to receive
e-mails with the latest R posts.
(You will not see this message again.)

Click here to close (This popup will not appear again)