<

Go Premium for a chance to win a PS4. Enter to Win

x

Mastering R Programming: Incorporating R code into a Sweave document

Published on
4,542 Points
1,242 Views
3 Endorsements
Last Modified:
This article will show, step by step, how to integrate R code into a R Sweave document
I am writing this article as a continuation to my previous article, which introduced how to create a beautiful looking document with R Sweave.  However, the presentable look that Sweave documents offer is only half their power!  Another very important feature is incorporating R code directly into the script. That way when it compiles, you can have a presentable way to display your data!
 
To begin, create a Sweave document and populate it with the same sort of information as we did in the last article.  For reference I have included the code outline below:
\documentclass{article}
 
\title {Using \LaTeX with R}
\author {Matthew Richardson\\
Written for Experts Exchange
}
 
\begin{document}
\SweaveOpts{concordance=TRUE}
 
\maketitle
 
\section*{Incorporating R code}
 
\end{document}

Open in new window


Now, in order to be able to include R code, you need to designate a special block so Sweave knows you mean it to utilize R’s capabilities.  This will be marked with:
<<>>=
  (code)
@

Open in new window

You want to include this in the body of your script (see below)
Screen-Shot-2015-09-16-at-10.03.23-A.pngI know it looks odd at first.  You will know if R studio considers this block of code because it will become shaded on your script file and look like this:
Screen-Shot-2015-09-25-at-1.01.56-PM.pngWithin the opposite facing inequalities is your location to put arguments you want the code to follow.  To list some of the most frequently used:
 
  1. Echo = FALSE if you do not want the code to be generated in your document
Echo = TRUE if you would like the code for the output to display
  1. Results = hide if you want the output from the code to be hidden
Results = tex if you want the output of the code to display in LaTeX format
  1. Fig = TRUE to display figures from a line of code
  2. Label = fig1 (or whatever you want to name your figure)
 
*To list multiple, make sure to just separate the arguments with a comma (,) for example:
label=fig1,fig=TRUE,echo=FALSE

Open in new window


So lets do an example.  Say I wanted to write a LaTeX article about the popular book series A Song of Ice and Fire.  And lets say somewhere in that article I wanted to include the table found on the series Wikipedia page under Publishing History.  Well one step would be to make the table myself.  Or I could use the power of R to incorporate the information!  (See below)

<<echo=FALSE, results=hide>>=
library(XML)
library(httr)
url <- GET("http://en.wikipedia.org/wiki/A_Song_of_Ice_and_Fire")
table <- readHTMLTable(rawToChar(url$content), stringsAsFactors = F)
str(table)
table[[2]]
books <- as.data.frame(table[[2]])[,-1]
names(books) <- c("Title","Pages","Chapters","Audio Length","U.S. Release")
books[,2] <- c(704,768,992,753,1056,NA,NA)
@
 
<<results=tex>>=
library(xtable)
xtable(books)
@

Open in new window


I separated the two blocks of code to display that you can continue on with a different section of code with different arguments.  This would display like this:
 Screen-Shot-2015-09-25-at-1.17.26-PM.png 
And then to incorporate a figure I would just write:
<<label=fig1,fig=TRUE,echo=FALSE>>=
plot(1:7,books[,2],xlim=c(1,5),xlab="Book Number",ylab="Number of Pages",main="Number of Pages per Book")
@

Open in new window


And I get a perfect figure created when I compile my document automatically!
 
Screen-Shot-2015-09-25-at-1.19.01-PM.png 
Great isn’t it!?
 
I will leave you to experiment with any R code that you want to use, but I can attest to the fact that utilizing this powerful functionality of R and R Studio will make any dull LaTeX articles come to life with a lot less effort than before!
 
The only issue I would normally run into when I was first learning would be formatting.  There are a lot of tricks and work-arounds to fitting a graphic or plot on a page within the margins.  If you run into anything like this, or have follow-up questions, please don’t hesitate to leave a comment! I would love to help!
3
Comment
0 Comments

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

Join & Write a Comment

The viewer will be introduced to the technique of using vectors in C++. The video will cover how to define a vector, store values in the vector and retrieve data from the values stored in the vector.
Screencast - Getting to Know the Pipeline
Suggested Courses
Course of the Month8 days, 11 hours left to enroll

Keep in touch with Experts Exchange

Tech news and trends delivered to your inbox every month