R and presentations: a basic example of knitr and beamer
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Manually combining R code and a presentation can be quite a pain. Luckily, using tools like odfWeave
, Sweave
and knitr
, integrating documents and R code is quite painless. In this post I want to take a look at combining the knitr
package with the Latex package beamer
. I use the knitr package instead of the the Sweave package because it basically is a better Sweave, see this link for more information.
The basic structure of a knitr
document is that you fill your text file with latex
code, interspaced with section of R code like this:
<<name_of_chunk>>= some R code here @
It is custom to save this file with a .Rnw
extension. Going from the Rnw
to a pdf is a two step procedure: 1) run knitr
, and 2) run pdflatex
. First, knitr
interprets the R code to produce a tex
file, and then pdflatex
creates the pdf. Below I posted a basic example which shows how to use knitr
together with the beamer
document class. The resulting pdf looks like this, and this is the knitr
/latex
code (Rnw file) that was the source.
\documentclass{beamer} \begin{document} \title{A Minimal Demo of knitr} \author{Yihui Xie} \maketitle \begin{frame}[fragile] You can test if \textbf{knitr} works with this minimal demo. OK, let's get started with some boring random numbers: <<boring-random>>= set.seed(1121) (x=rnorm(20)) mean(x);var(x) @ \end{frame} \begin{frame}[fragile] The first element of \texttt{x} is \Sexpr{x[1]}. Boring boxplots and histograms recorded by the PDF device: <<boring-plots,dev=pdf,fig.width=5,fig.height=5,out.width=.45\linewidth,par=TRUE>>= ## two plots side by side (option fig.show=hold) boxplot(x) hist(x,main='') @ \end{frame} \end{document}
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.