Computational Finance and Risk Management
mm

40

60

80

100

120

Introduction to R

40

Guy Yollin

60

Principal Consultant, r-programming.org
Affiliate Instructor, University of Washington

80

Guy Yollin (Copyright

©

2011)

Introduction to R

1 / 132

Outline
1

R language references2

R overview and history

3

R language and environment basics

4

The working directory, data files, and data manipulation

5

Basic statistics and the normal distribution

6

Basic plotting

7

Working with time series in R

8

Variable scoping in R

9

The R help system

10

Web resources
for R
80

11

IDE editors for R

mm

40

60

80

100

120

40

60

Guy Yollin (Copyright

©

2011)

Introduction to R

2 / 132

Outline
1

R language references2

R overview and history

3

R language and environment basics

4

The working directory, data files, and data manipulation

5

Basic statistics and the normal distribution

6

Basic plotting

7

Working with time series in R

8

Variable scoping in R

9

The R help system

10

Web resources
for R
80

11

IDE editors for R

mm

40

60

80

100

120

40

60

Guy Yollin (Copyright

©

2011)

Introduction to R

4 / 132

Essential web resources
mm

40

60

80

An Introduction to R

100

120

R Reference Card

W.N. Venables, D.M. Smith
R Development Core TeamTom Short

40
R Reference Cardby Tom Short, EPRI Solutions, Inc., tshort@eprisolutions.com 2005-07-12
Granted to the public domain. See www.Rpad.org for the source and latest
version. Includes material from R for Beginners by Emmanuel Paradis (withpermission).

Help and basics

Most R functions have online documentation.
help(topic) documentation on topic?topic id.
help.search("topic") search the help systemapropos("topic") the names of all objects in the search list matching
the regular expression ”topic”
help.start() start the HTML version of help
str(a) display the internal *str*ucture of an R object
summary(a) gives a “summary” of a, usually a statistical summary but it isgeneric meaning it has different operations for different classes of als() show objects in the search path; specify pat="pat" to search on apatternls.str() str() for each variable in the search pathdir() show files in the current directory
methods(a) shows S3 methods of amethods(class=class(a)) lists all the methods to handle objects ofclass aoptions(...) set or examine many global options; common ones: width,
digits, error
library(x) load add-on packages; library(help=x) lists datasets andfunctions in package x.
attach(x) database x to the R search path; x can be a list, data frame, or R
data file created with save. Use search() to show the search path.
detach(x) x from the R search path; x can be a name or character stringof an object previously attached or a package.

60

Input and output

load() load the datasets written with savedata(x) loads specified data sets
read.table(file) reads a file in table format and creates a data
frame from it; the default separator sep="" is any whitespace; useheader=TRUE to read the first line as a header of column names; use
as.is=TRUE to prevent character vectors from being converted to factors; use comment.char="" to prevent "#" from being interpreted as
a comment; use skip=n to skip n lines before reading data; see thehelp for options on row naming, NA treatment, and others
read.csv("filename",header=TRUE) id. but with defaults set forreading comma-delimited files
read.delim("filename",header=TRUE) id. but with defaults set
for reading tab-delimited files
read.fwf(file,widths,header=FALSE,sep="",as.is=FALSE)
read a table of f ixed width f ormatted data into a ’data.frame’; widths
is an integer vector, giving the widths of the fixed-width fields
save(file,...) saves the specified objects (...) in the XDR platformindependent binary format
save.image(file) saves all objects

cat(..., file="", sep=" ") prints the arguments after coercing tocharacter; sep is the character separator between arguments
print(a, ...) prints its arguments; generic, meaning it can have different methods for different objects
format(x,...) format an R object for pretty printing
write.table(x,file="",row.names=TRUE,col.names=TRUE,
sep=" ") prints x after converting to a data frame; if quote is TRUE,
character or factor columns are surrounded by quotes ("); sep is thefield separator; eol is the end-of-line separator; na is the string for
missing values; use col.names=NA to add a blank column header to
get the column headers aligned correctly for spreadsheet input
sink(file) output to file, until sink()
Most of the I/O functions have a file argument. This can often be a character string naming a file or a connection. file="" means the standard input or
output. Connections can include files, pipes, zipped files, and R variables.
On windows, the file connection can also be used with description ="clipboard". To read a table copied from Excel, use
x <- read.delim("clipboard")
To write a table to the clipboard for Excel, usewrite.table(x,"clipboard",sep="\t",col.names=NA)
For database interaction, see packages RODBC, DBI, RMySQL, RPgSQL, andROracle. See packages XML, hdf5, netCDF for reading other file formats.

Data creationc(...) generic function to combine arguments with the default forming avector; with recursive=TRUE descends through lists combining all
elements into one vector
from:to generates a sequence; “:” has operator priority; 1:4 + 1 is “2,3,4,5”
seq(from,to) generates a sequence by= specifies increment; length=
specifies desired lengthseq(along=x) generates 1, 2, ..., length(x); useful for for loops
rep(x,times) replicate x times; use each= to repeat “each” element of x each times; rep(c(1,2,3),2) is 1 2 3 1 2 3;
rep(c(1,2,3),each=2) is 1 1 2 2 3 3data.frame(...) create a data frame of the named or unnamed
arguments; data.frame(v=1:4,ch=c("a","B","c","d"),n=10);
shorter vectors are recycled to the length of the longest
list(...)
create a list of the named or unnamed arguments;
list(a=c(1,2),b="hi",c=3i);
array(x,dim=) array with data x; specify dimensions like
dim=c(3,4,2); elements of x recycle if x is not long enoughmatrix(x,nrow=,ncol=) matrix; elements of x recycle
factor(x,levels=) encodes a vector x as a factor
gl(n,k,length=n*k,labels=1:n) generate levels (factors) by specifying the pattern of their levels; k is the number of levels, and n is
the number of replications
expand.grid() a data frame from all combinations of the supplied vectors or factors
rbind(...) combine arguments by rows for matrices, data frames, andotherscbind(...) id. by columns

Slicing and extracting data

Indexing lists
x[n]list with elements n
x[[n]]
nth element of the list
x[["name"]] element of the list named "name"x$nameid.
Indexing vectors
x[n]nth elementx[-n]all but the nth elementx[1:n]
first n elementsx[-(1:n)]elements from n+1 to the end
x[c(1,4,2)]
specific elementsx["name"]element named "name"x[x > 3]all elements greater than 3x[x > 3 & x < 5]
all elements between 3 and 5x[x %in% c("a","and","the")] elements in the given set
Indexing matrices
x[i,j]
element at row i, column j
x[i,]
row i
x[,j]
column jx[,c(1,3)] columns 1 and 3x["name",] row named "name"Indexing data frames (matrix indexing plus the following)x[["name"]] column named "name"x$nameid.

Variable conversion
as.array(x), as.data.frame(x), as.numeric(x),as.logical(x), as.complex(x), as.character(x),... convert type; for a complete list, use methods(as)Variable informationis.na(x), is.null(x), is.array(x), is.data.frame(x),is.numeric(x), is.complex(x), is.character(x),... test for type; for a complete list, use methods(is)length(x) number of elements in x
dim(x) Retrieve or set the dimension of an object; dim(x) <- c(3,2)
dimnames(x) Retrieve or set the dimension names of an object
nrow(x) number of rows; NROW(x) is the same but treats a vector as a onerow matrix
ncol(x) and NCOL(x) id. for columns
class(x) get or set the class of x; class(x) <- "myclass"unclass(x) remove the class attribute of x
attr(x,which) get or set the attribute which of x
attributes(obj) get or set the list of attributes of obj

Data selection and manipulation

which.max(x) returns the index of the greatest element of x
which.min(x) returns the index of the smallest element of x
rev(x) reverses the elements of xsort(x) sorts the elements of x in increasing order; to sort in decreasingorder: rev(sort(x))
cut(x,breaks) divides x into intervals (factors); breaks is the numberof cut intervals or a vector of cut points

80
Definitely obtain these PDF files!
Guy Yollin (Copyright

©

2011)

Introduction to R

5 / 132

Other worthwhile texts
mm

40

60

R in a Nutshell: A Desktop
Quick Reference

80

100

120

A Beginner’s Guide to R
Zuur, Ieno, Meesters
Springer, 2009

Joseph Adler
O’ReillyMedia, 2009
40

60

80

Guy Yollin (Copyright

©

2011)

Introduction to R

6 / 132

Experience with other statistical computing languages
mm

40

60

80

100

120

For those with experience in MATLAB, David Hiebeler has created a
MATLAB/R cross reference document:40
http://www.math.umaine.edu/~hiebeler/comp/matlabR.pdf

For those with experience in SAS, SPSS, or Stata, Robert Muenchen has
written R books for this audience:60

http://r4stats.com

80

Guy Yollin (Copyright

©

2011)

Introduction to R

7 / 132

Outline
1

R language references2

R overview and history

3

R language and environment basics

4

The working directory, data files, and data manipulation

5

Basic statistics and the normal distribution

6

Basic plotting

7

Working with time series in R

8

Variable scoping in R

9

The R help system

10

Web resources
for R
80

11

IDE editors for R

mm

40

60

80

100

120

40

60

Guy Yollin (Copyright

©

2011)

Introduction to R

8 / 132

What is R?
R ismma language andcomputing
40 environment
60 for statistical
80
100 andgraphics

120

R is based on the S language originally developed by John Chambers
and 40colleagues at AT&T Bell Labs in the late 1970s and early 1980s
R (sometimes called “GNU S” ) is free open source software licensed
under the GNU general public license (GPL 2)
60

R development was initiated by Robert Gentleman and Ross Ihaka at
the University of Auckland, New Zealand
R is 80
formally known as The R Project for Statistical Computing
www.r-project.org
Guy Yollin (Copyright

©

2011)

Introduction to R

9 / 132

What is R great at?
mm

40

60

80

100

120

4.0

HAM1 Performance
HAM1

3.5

EDHEC LS EQ

2.5
1.0

1.5

40

2.0

Data manipulation

Cumulative Return

3.0

SP500 TR

0.00

Monthly Return−0.05
0.0 −0.10

Statistical modeling

0.05

Data analysis

−0.2
−0.3
−0.4

Data visualization

Drawdown−0.1

60

Jan 96

Jan 97

Jan 98

Jan 99

Jan 00

Jan 01

Jan 02

Jan 03

Jan 04

Jan 05

Jan 06

Dec 06

Date

80

Guy Yollin (Copyright

Plot from the PerformanceAnalytics package

©

2011)

Introduction to R

10 / 132

S language implementations
R is the mostmm recent and
40 full-featured
60
implementation of the S language

80

100

120

Original S - AT & T Bell Labs
40

S-PLUS (S plus a GUI)
Statistical Sciences, Inc.†
Mathsoft, Inc.
Insightful, Inc.
60
Tibco,Inc.

R - The R Project for StatisticalComputingFigure from The History of S and R, John Chambers, 2006

80†

Founded by UW Statistics Professor Doug Martin

Guy Yollin (Copyright

©

2011)

Introduction to R

11 / 132

R timeline
mm

40
1991
Statistical Models in S
(white book)S3 methods

60

100

120

1999
John Chambers
1998 ACM Software Award

1984
S: An Interactive Envirnoment for
Data Analysis and Graphics
1988(Brown Book)
The New S Language
Written in C
(Blue Book)
Work on S
Version 1

1993
R on Statlib

40

1976

80

2000
R 1.0.0(S3)

1997
R on CRAN
GNU Project2001
R 1.4.0(S4)

2002
Modern Applied Statistics
with S
4th Edition(S+ 6.x, R 1.5.0)

2004
R 2.0.0

2010
R&R
Given ASA
Statistical Computing
and Graphics Award

2011

60
S-PLULS
developed by
Statistical Sciences, Inc.
1988

StatSci Licenses S
1993

Modern Applied Statistics
with S-PLUS
2nd Edition
1997

Modern Applied Statistics
with S-PLUS
1994

Modern Applied Statistics
with S-PLUS
Programming with Data
3rd Edition(Green Book)(S+ 2000, 5.x)
(S+ 5.x)(R complements)
1998
1999

Exponential
growth of
R Users andR packages

80

Guy Yollin (Copyright

©

2011)

Introduction to R

12 / 132

Recognition of software excellence
mm

40

60

80

100

Association for Computing
Machinery

American Statistical
Association

John Chambers
received the 199840
ACM Software System Award

Robert Gentleman and Ross
Ihaka received the 2009 ASA
Statistical Computing andGraphics Award

Dr. Chambers’ work
will forever alter theway
60people analyze,
visualize, andmanipulate data120

In recognition for theirwork in initiating the R
Project for StatisticalComputing80

Guy Yollin (Copyright

©

2011)

Introduction to R

13 / 132

The R Foundationmm
40 non-profit
60organization
80 located in100
120
The R Foundationis theVienna, Austria
which is responsible for developing and maintaining R

Hold and administer the copyright of R software and documentation40

Support continued development of R
Organize meetings and conferences related to statistical computing
Officers
Presidents
Robert Gentleman, Ross Ihaka
60
Secretary Friedrich LeischTreasurer Kurt Hornik
At Large John Chambers
Auditors
Peter Dalgaard, Martin Maechler
80

Guy Yollin (Copyright

©

2011)

Introduction to R

14 / 132

The R Core Team
Douglas Bates – University of Wisconsin Madison
JohnmmChambers – Stanford
40 University60
80
100
Peter Dalgaard – University of Copenhagen
Seth Falcon – Fred Hutchinson Cancer Research Center
Robert Gentleman – Genetech
Kurt Hornik – Vienna University of Economics and BusinessStefano40 Iacus – University of Milan
Ross Ihaka – University of Auckland
Friedrich Leisch – Ludwig–Maximilians –University MunichThomas Lumley – University of Washington
Martin Maechler – ETH Swiss Federal Institute of Technology Zurich
Duncan60 Murdoch – University of Western Ontario
Paul Murrell – University of Auckland
Martyn Plummer – International Agency for Research on Cancer
Brian Ripley – University of Oxford
Deepayan Sarkar – Fred Hutchinson Cancer Research Center
80 Temple Lang – University of California Davis
DuncanLuke Tierney – University of Iowa
Simon Urbanek – AT & T Research Labs
Guy Yollin (Copyright

©

2011)

Introduction to R

120

15 / 132

Outline
1

R language references2

R overview and history

3

R language and environment basics

4

The working directory, data files, and data manipulation

5

Basic statistics and the normal distribution

6

Basic plotting

7

Working with time series in R

8

Variable scoping in R

9

The R help system

10

Web resources
for R
80

11

IDE editors for R

mm

40

60

80

100

120

40

60

Guy Yollin (Copyright

©

2011)

Introduction to R

16 / 132

The R GUI
mm

40

60

80

100

120

Running R in Windows†
40

Typically run Rgui.exe
Can also run R.exe fromcommand prompt60

Or run Rterm.exe in batch mode80†

The R GUI on a Windows platformsee RNUT for info about running R on Linux and Mac

Guy Yollin (Copyright

©

2011)

Introduction to R

17 / 132

Interactive R session
mm

40

60

80

100

120

R is an interpreted language
40GUI is an interactive
The R
command driven environment
type R commands at the R
GUI console
60
Run previously created R
scripts (R commands in a text
file)
80
Commands entered interactively into the R console

Guy Yollin (Copyright

©

2011)

Introduction to R

18 / 132

Assigning values to variables
mm

40

60

Typical variable assignment
assignment operator: <assignment function: assign
equal sign: =40

must be used to assign
arguments in a function call

80

100

R Code: Variable assignment120> y <- 5> y[1] 5> assign("e",2.7183)> e[1] 2.7183

Special purpose assignment60
globalassignment operator: <<-> s = sqrt(2)> s[1] 1.414214

Deprecated assignment operator
underscore character: _80

Guy Yollin (Copyright

©

2011)

> r <- rnorm(n=2)> r[1] 0.4296685 0.4046568

Introduction to R

19 / 132

Object orientation in R
mm

40

60

Everything in R is an Object

80

100

120

Use functions ls and objects to list all objects in the current
workspace40
R Code: Listing objects> x <- c(3.1416,2.7183)> m <- matrix(rnorm(9),nrow=3)60> tab <- data.frame(store=c("downtown","eastside","airport"),sales=c(32,17,24))> cities <- c("Seattle","Portland","San Francisco")> ls()[1] "cities" "e"

"m"

"r"

"s"

"tab"

"x"

"y"

80

Guy Yollin (Copyright

©

2011)

Introduction to R

20 / 132

Data types
mm

40

60

All R objects have a type or storage
mode
Use function
typeof to display
40
an object’s type

80

100

120

R Code: Object type (storage mode)> x[1] 3.1416 2.7183> typeof(x)[1] "double"

Common types are:double60
character
list
integer> cities[1] "Seattle""Portland"[3] "San Francisco"> typeof(cities)[1] "character"80

Guy Yollin (Copyright

©

2011)

Introduction to R

21 / 132

Object classes
mm40

All R objects have a class
Use function class to40
display an object’s class

R Code: Object
60
80 class

100

120

> m
[,1]
[,2]
[,3]
[1,] -0.6147361 -0.2248133 0.1354078[2,] -0.7835507 2.3798959 0.8825350[3,] 1.0156090 1.4605885 0.9470563> class(m)There are many R classes;
basic classes are:60
numeric
characterdata.frame
matrix[1] "matrix"> tab
store sales
1 downtown
32
2 eastside
17
3 airport
24> class(tab)80[1] "data.frame"

Guy Yollin (Copyright

©

2011)

Introduction to R

22 / 132

Vectors
R is a vector/matrix language
mm can easily40be created 6080100vectors
with c, the combinefunction120

most places where single value can be supplied, a vector can besupplied and R will perform a vectorized operation
R Code: Creating
vectors and vector operations
40> constants <- c(3.1416,2.7183,1.4142,1.6180)> names(constants) <- c("pi","euler","sqrt2","golden")> constants
pi euler sqrt2 golden
3.1416 2.7183
60 1.4142 1.6180> constants^2
pi
euler
sqrt2
golden9.869651 7.389155 1.999962 2.617924> 10*constants
80
pi euler sqrt2 golden
31.416 27.183 14.142 16.180
Guy Yollin (Copyright

©

2011)

Introduction to R

23 / 132

Indexing vectors
R Code: Indexing vectors

mm

40

60

sqrt2 golden
1.4142 1.6180> constants[c("pi","golden")]vector60of negative integers

pi golden
3.1416 1.6180

vector of named items> constants > 2

logical vector

120> constants[c(-1,-2)]Vectors can be indexed in any of thefollowing ways:
vector of positive integers

100

pi sqrt2 golden
3.1416 1.4142 1.6180

Vectors indices are placed withsquare brackets: []40

80> constants[c(1,3,4)]

pi
TRUE

euler
TRUE

sqrt2 golden
FALSE FALSE> constants[constants > 2]80

pi euler
3.1416 2.7183
Guy Yollin (Copyright

©

2011)

Introduction to R

24 / 132

The recycling rule
When 2 vectors of unequal length are involved in an operation, the shortermm
40 the length60of the longer
80 vector
100
120
one is recycled
to equal
R Code: Illustration of recycling> constants
pi euler sqrt2 golden
40
3.1416 2.7183 1.4142 1.6180> constants*2
pi euler sqrt2 golden
6.2832 5.4366 2.8284 3.2360

60> constants*c(0,1)
pi euler sqrt2 golden
0.0000 2.7183 0.0000 1.6180> constants*c(0,1,2)

80 sqrt2 golden
pi euler
0.0000 2.7183 2.8284 0.0000
Guy Yollin (Copyright

©

2011)

last input generates a warning: longer object lengthis not a multiple of shorter object length

Introduction to R

25 / 132Sequences
An integer
can be60created withmmsequence vector
40
80the : operator
100

120

A general numeric sequence vector can be created with the seq function
R Code: seq arguments

40> args(seq.default)
function (from = 1, to = 1, by = ((to - from)/(length.out - 1)),
length.out = NULL, along.with = NULL, ...)
NULL

60

to starting value

from ending value
by increment80
len length of sequence

Guy Yollin (Copyright

©

2011)

Introduction to R

26 / 132Sequences
mm

40

60

80

100

120

R Code: Creating sequences> 1:5[1] 1 2 3 4 540> -5:5[1] -5 -4 -3 -2 -1

0

1

2

3

4

5

> seq(from=0,to=1,len=5)[1] 0.00 0.25
60 0.50 0.75 1.00
> seq(from=0,to=20,by=2.5)
[1]

0.0

2.5

5.0

7.5 10.0 12.5 15.0 17.5 20.0

80

Guy Yollin (Copyright

©

2011)

Introduction to R

27 / 132

Passing arguments to functions
unnamed arguments are assigned according to their position
mm arguments40are assigned
60 according 80
100and can be
120
named
to their nameinany position
partial name matching is performed
arguments with default values are not required to be passed
40
R Code: Illustration of flexibility in passing arguments> seq(0,10,2)
[1]

0

2

4

6

8 10

60
> seq(by=2,0,10)
[1]

0

2

4

6

8 10

> seq(0,10,len=5)
[1]

0.0

2.5

5.0

7.5 10.03580> seq(0,10)
[1]

0

1

2

Guy Yollin (Copyright

4

©

2011)

6

7

8

9 10
Introduction to R

28 / 132

The "..." argument
Many functions include in their argument list a ...
mm

40

60

80

100

120

R Code: The plot function arguments> args(plot.default)
function (x, y = NULL, type = "p", xlim = NULL, ylim = NULL,
log = "", main = NULL, sub = NULL, xlab = NULL, ylab = NULL,
40
ann = par("ann"), axes = TRUE, frame.plot = axes, panel.first = NULL,
panel.last = NULL, asp = NA, ...)NULL

This is a mechanism to allow additional arguments to be passed
60
which will subsequently be passed on to a sub-function that the mainfunction will call
An example of this would be passing graphic parameters (e.g. lwd=2)
to the plot function which will subsequently call and pass these80arguments on the par function
Guy Yollin (Copyright

©

2011)

Introduction to R

29 / 132

The rep function
The rep function is used to create (or initialize) vectors
mm

40

60

R Code: Examples of rep> rep(0,10)

80

100

120

# initialize a vector[1] 0 0 0 0 0 0 0 0 0 0> rep(1:4, 2) # repeat pattern 2 times

40[1] 1 2 3 4 1 2 3 4> rep(1:4, each = 2)

# repeat each element 2 times[1] 1 1 2 2 3 3 4 4> rep(1:4,60
c(2,1,2,1))[1] 1 1 2 3 3 4> rep(1:4, each = 2, len = 10)# 8 integers plus two recycled 1's.

[1] 1 1 2 2 3 3 4 4 1 1> rep(1:4,80
each = 2, times = 3)

# length 24, 3 complete replications[1] 1 1 2 2 3 3 4 4 1 1 2 2 3 3 4 4 1 1 2 2 3 3 4 4
Guy Yollin (Copyright

©

2011)

Introduction to R

30 / 132

Generic functions
mm

40

60

80

100

120

A generic function behaves in a way that is appropriate based on the classof its argument; for example:
plot
print40summary
R Code: Some classes handled by the plot function> methods(plot)[1:15]

60[1] "plot.acf"[4] "plot.default"[7] "plot.ecdf"[10] "plot.hclust"[13] "plot.isoreg""plot.data.frame""plot.dendrogram""plot.factor""plot.histogram""plot.lm""plot.decomposed.ts""plot.density""plot.formula""plot.HoltWinters""plot.medpolish"

80

Guy Yollin (Copyright

©

2011)

Introduction to R

31 / 132

R packages
40 stored in packages
60
All mm
R functions are

80

100

120

The standard R distribution includes core packages and recommended
packages:Core R packages
40base, utils, stats, methods, graphics, grDevices, datasets

Recommended packages
boot, rpart, foreign, MASS, cluster, Matrix, etc.

Additional packages can be downloaded through the R GUI or via the60
install.packages function

When R is initially loaded, only core R packages are loaded by default
Additional packages are loaded via the library command
80
Packages datasets are made accessible via the data command

Guy Yollin (Copyright

©

2011)

Introduction to R

32 / 132

Loading packages and data into your R session
The library and data functions are used to load additional libraries anddata intomm
the current 40
R session 60
80
100
120
R Code: The library and data function> args(library)function (package, help, pos = 2, lib.loc = NULL, character.only = FALSE,
40
logical.return = FALSE, warn.conflicts = TRUE, quietly = FALSE,
keep.source = getOption("keep.source.pkgs"), verbose = getOption("verbose"))NULL> args(data)
function (...,
60 list = character(), package = NULL, lib.loc = NULL,
verbose = getOption("verbose"), envir = .GlobalEnv)
NULL> library(nutshell)> data(top.bacon.searching.cities)> top.bacon.searching.cities[1,]80city rank
1 Seattle 100
Guy Yollin (Copyright

©

2011)

Introduction to R

33 / 132

Installing contributed packages
mm
The install.packages
can be used80
to install contributed
40 function 60
100
packages120

R Code: The install.packages function> args(install.packages)
40function (pkgs, lib, repos = getOption("repos"), contriburl = contrib.url(repos,type), method, available = NULL, destdir = NULL, dependencies = NA,type = getOption("pkgType"), configure.args = getOption("configure.args"),
configure.vars = getOption("configure.vars"), clean = FALSE,
Ncpus = getOption("Ncpus", 1L), libs_only = FALSE, INSTALL_opts,...) 60
NULL> #install.packages("nutshell")> # or if repos needs to be specified> #install.packages("nutshell", repos="http://cran.fhcrc.org")

80
see RNUT for more info on installing packages
Guy Yollin (Copyright

©

2011)

Introduction to R

34 / 132

Installing contributed packages
Packages can also be installed through the R GUI
mm

40

60

80

100

120

40

60

80

Guy Yollin (Copyright

©

2011)

Introduction to R

35 / 132

Packages for basic computational finance
mm

40

60

80

100

120

The following R add-on packages are recommended for computational
finance:40

Packagezootseries
PerformanceAnalytics
60
quantmodxts

Description
Time series objects
Time series analysis and computational finance
Performance and risk analysis
Quantitative financial modeling framework
Extensible time series

80

Guy Yollin (Copyright

©

2011)

Introduction to R

36 / 132

Outline
1

R language references2

R overview and history

3

R language and environment basics

4

The working directory, data files, and data manipulation

5

Basic statistics and the normal distribution

6

Basic plotting

7

Working with time series in R

8

Variable scoping in R

9

The R help system

10

Web resources
for R
80

11

IDE editors for R

mm

40

60

80

100

120

40

60

Guy Yollin (Copyright

©

2011)

Introduction to R

37 / 132

The working directory
Unless overridden by a filename which includes a path, R reads and writes
files to the
mmworking directory
40
60
80
100
120
R Code: Getting and setting the working directory> getwd()[1] "C:/Rprojects/UW/lecture-01"

40> setwd("C:\\Rprojects\\PCA")> getwd()[1] "C:/Rprojects/PCA"> setwd("C:/Rprojects/UW/lecture-01")> getwd() 60[1] "C:/Rprojects/UW/lecture-01"

The backslash character “\” in a character string is used to begin an
escape80 sequence, so to use backslash in a string enter it as “\\”The forward slash character ”/” can also be used as a directory
separator on windows systems
Guy Yollin (Copyright

©

2011)

Introduction to R

38 / 132

The working directory
The working directory can also be changed from the R GUI
mm

40

60

80

100

120

40

60

80

Guy Yollin (Copyright

©

2011)

Introduction to R

39 / 132

The read.table function
The read.table function is used extensively to load data into R
mm

40

60

80

100

120

R Code: read.table arguments> args(read.table)
function (file, header = FALSE, sep = "", quote = "\"'", dec = ".",
row.names, col.names, as.is = !stringsAsFactors, na.strings = "NA",40 = NA, nrows = -1, skip = 0, check.names = TRUE,
colClasses
fill = !blank.lines.skip, strip.white = FALSE, blank.lines.skip = TRUE,
comment.char = "#", allowEscapes = FALSE, flush = FALSE,
stringsAsFactors = default.stringsAsFactors(), fileEncoding = "",encoding = "unknown")
NULL

60

file file name (with path if necessary)header TRUE/FALSE if there are column names in the file
sep column separation character (e.g. comma or tab)80

as.is tells R not to convert strings into factors
Guy Yollin (Copyright

©

2011)

Introduction to R

40 / 132

Reading a text file
mm

40

60

80

100

120

40

R Code: Read csv file60
> dat <- read.table("intc.csv",header=FALSE,sep=",",as.is=TRUE)> dat[1:5,]
V1
V2
V3
V4
V5
V6
1 1986-07-09 0.380000 0.384419 0.371163 0.38 1564294736
2 1986-07-10 0.383214 0.383214 0.367710 0.37 3623351351
3 1986-07-11
80 0.366494 0.370909 0.331169 0.34 8968235294
4 1986-07-14 0.344416 0.344416 0.335584 0.34 1615007058
5 1986-07-15 0.338684 0.343026 0.325658 0.33 2110865454
Guy Yollin (Copyright

©

2011)

Introduction to R

41 / 132

The data.frame object
R Code: The data.frame object

mm

40

60

80
> dim(dat)[1] 6092

100

120

6

> dat[1:2,1:3]

The read.tablefunction40
returns a data.frame object

V1
V2
V3
1 1986-07-09 0.380000 0.384419
2 1986-07-10 0.383214 0.383214> typeof(dat)A data.frame is a 2D
matrix-likeobject where the60columns can be of different
classes[1] "list"> class(dat)[1] "data.frame"> class(dat[,1])[1] "character"80> class(dat[,2])[1] "numeric"
Guy Yollin (Copyright

©

2011)

Introduction to R

42 / 132

The head and tail functions
R Code: mm
The head and tail functions

40

60

80

100

120

> args(head.matrix)
function (x, n = 6L, ...)NULL
> head(dat)

40

V1
V2
V3
V4
V5
V6
1 1986-07-09 0.380000 0.384419 0.371163 0.38 1564294736
2 1986-07-10 0.383214 0.383214 0.367710 0.37 3623351351
3 1986-07-11 0.366494 0.370909 0.331169 0.34 8968235294
4 1986-07-14 0.344416 0.344416 0.335584 0.34 1615007058
5 1986-07-15
60 0.338684 0.343026 0.325658 0.33 2110865454
6 1986-07-16 0.335329 0.335329 0.317910 0.32 2303230600> tail(dat,3)
V1
V2
V3
V4
V5
V6
6090 2010-08-30 18.25 18.31 17.94 17.96 73718900
806091 2010-08-31
17.88 17.92 17.60 17.67 111601400
6092 2010-09-01 17.94 18.27 17.89 18.14 73506800

Guy Yollin (Copyright

©

2011)

Introduction to R

43 / 132

Size-related and diagnostic helper functions
mm

40

60

80

100

120

R has a number of size related and diagnostic helper functions
Function
40
dim
nrow
ncol
length
60
head
tail
str

Description
return dimensions of a multidimensional object
number of rows of a multidimensional object
number of columns of a multidimensional object
length a vector or list
display first n rows (elements)
display last n rows (elements)
summarize structure of an object

80

Guy Yollin (Copyright

©

2011)

Introduction to R

44 / 132

Indexing data.frames and matrices
R Code: Indexing 2D objects

mm

40

60

80
100
120
> colnames(dat)<- c("date","open","high","low","close","volume")> tail(dat[,-1],3)

R has extremely powerful data
manipulation capabilities especially inopen highlow close
volumethe area of vector and matrix
6090 18.25 18.31 17.94 17.96 73718900
indexing 406091 17.88 17.92 17.60 17.67 111601400
6092 17.94 18.27 17.89 18.14

73506800

data.frames and matrices can be > tail(dat[,c("date","close")],3)
indexed in any of the following
date close
ways
6090 2010-08-30 17.96
60
vectorof positive integers
vector of negative integers
character vector of columns(row) names
a logical vector
80

Guy Yollin (Copyright

©

2011)

6091 2010-08-31 17.67
6092 2010-09-01 18.14> dat[dat[,"volume"]>15e9,c("date","close","volume")]date close
volume328 1987-10-22 0.61 16717377049
602 1988-11-21 0.52 16116850769
1715 1993-04-19 2.58 21509122170

Introduction to R

45 / 132

Writing text files
The functions write.table and write are used to write text files
40 write arguments
60
R Code: mmwrite.table and

80

100

120

> args(write.table)
function (x, file = "", append = FALSE, quote = TRUE, sep = " ",eol = "\n", na = "NA", dec = ".", row.names = TRUE, col.names = TRUE,
qmethod = c("escape", "double"), fileEncoding = "")40
NULL> args(write)
function (x, file = "data", ncolumns = if (is.character(x)) 1 else 5,
append = FALSE, sep = " ")
NULL

60

x object to be written (data.frame, matrix, vector)
file file name (with path if necessary)sep column separation character (e.g. comma or tab)80
row.names write row names (T/F)
col.names write col names (T/F)
Guy Yollin (Copyright

©

2011)

Introduction to R

46 / 132

Writing text files
mm

40

60

80

100

120

R Code: Write text files> write(x=constants,file="vector.dat",sep="\t")> write.table(x=m,file="matrix.dat",sep="\t",row.names=F,col.names=F)

40

60

80

Guy Yollin (Copyright

©

2011)

Introduction to R

47 / 132

The list object
A list object is a container that can hold other objects of different types
R Code: mmCreating lists 40

60

80

100

120

> constants <- list(pi=3.1416,euler=2.7183,golden=1.6180)> class(constants)[1] "list"> length(constants)
40[1] 3> constants$pi[1] 3.141660$euler[1] 2.7183$golden[1] 1.618 80> diverseList <- list(magic=constants,random=matrix(rnorm(4),ncol=2),
state=c("WA","OR"))Guy Yollin (Copyright

©

2011)

Introduction to R

48 / 132

Accessing items in a list
mm

40

60

Items in a list can be accessed using[], [[]], or $ syntax as follows:
40
vectorof positive integers
vector of named items
logical vector> constants[2]> constants[[2]][1] 2.7183> constants[["pi"]][[]] returns a single element$ returns a single element

120$euler[1] 2.7183[] returns a sublist

singleinteger
60
single nameR Code: 80
Indexing lists100[1] 3.1416> constants$golden[1] 1.618

single name> diverseList[[3]][2]80[1] "OR"see RNUT for more info on working with lists
Guy Yollin (Copyright

©

2011)

Introduction to R

49 / 132

Functions to examine objects and their structures
These functions help to query and unpack an object
mm

40

60

80

100

120

class query an objects class
str reports structure of an object
attributes returns list of objects attributes
40

attr get/set attributes of an object
names gets the names of a list, vector, data.frame, etc.
dimnames gets the row and column names of a data.frame or matrix
colnames
60 column names of a data.frame or matrix
rownames row names of a data.frame or matrix
dput makes an ASCII representation of an object
unclass removes class attribute of an object
80

unlist converts a list to a vector
see RNUT for more info on these functions
Guy Yollin (Copyright

©

2011)

Introduction to R

50 / 132

The paste function
mmfunction concatenates
40
60
80 and numerical100
The paste(pastes) strings
values120
together

its like a flexible version of sprintf
R Code: The
40 paste function> args(paste)function (..., sep = " ", collapse = NULL)
NULL> a <- 2; b <- 2
60
> paste("We know that: ", a, " + ", b, " = ", a+b, sep ="")
[1] "We know that: 2 + 2 = 4"
> paste("variable",1:5,sep="")[1] "variable1" "variable2" "variable3" "variable4" "variable5"

80

Guy Yollin (Copyright

©

2011)

Introduction to R

51 / 132

The apply function
The apply function is an extremely useful function that applies a givenfunctionmm
across the rowsof a matrix
40 and/or columns
60
80
100
120
R Code: The apply function> args(apply)
function (X, MARGIN, FUN, ...)NULL
40
> set.seed(1)> (m <- matrix(sample(9),ncol=3))
[1,]
[2,]
[3,]

[,1] [,2] [,3]3
6
8
9 60 27
5
4
1> apply(m,2,sum)[1] 17 12 16

80

There are a number of apply related functions; one mark of mastering
R is mastering apply related functions
Guy Yollin (Copyright

©

2011)

Introduction to R

52 / 132

S4 Classes
mm
60
80
100
S4 classes
are a more40
modern implementationof object-oriented
programming in R compared to S3 classes

120

Data in an S4 class is organized into slots; slots can be accessedusing:
40
the @ operator: object@namethe slot function: slot(object,name)Methods for an S4 class can be queried with the showMethods
function
60
showMethods(class = ”fGARCH”)

Methods can be retrieved/viewed with the getMethod function
getMethod(”predict”,”fGARCH”)
80

Guy Yollin (Copyright

©

2011)

Introduction to R

53 / 132

Outline
1

R language references2

R overview and history

3

R language and environment basics

4

The working directory, data files, and data manipulation

5

Basic statistics and the normal distribution

6

Basic plotting

7

Working with time series in R

8

Variable scoping in R

9

The R help system

10

Web resources
for R
80

11

IDE editors for R

mm

40

60

80

100

120

40

60

Guy Yollin (Copyright

©

2011)

Introduction to R

54 / 132

Probability distributions
mm

40

60

80

100

120

Random variable
A random variable is a quantity that can take on any of a set of
possible values but only one of those values will actually occur
40
discrete random variables have a finite number of possible values
continuous random variables have an infinite number of possible values

Probability distribution
60

The set of all possible values of a random variable along with theirassociated probabilities constitutes a probability distribution of therandom variable
80

Guy Yollin (Copyright

©

2011)

Introduction to R

55 / 132

PDFs and CDFs
mm

40

60

80

100

120

Probability density function (PDF)
fY (y )fY (y )dy = 1

0.0

Z ∞

0.1

40

0.2

a

0.3

Pr (a < Y < b) =

0.4

PDF

Z b

−∞

−4

4

2

4

0.8

1.0

CDF

0.0

0.2

80

2

0.6

−∞

0

0.4

60
Cumulative
distribution function (CDF)
Z y
FY (y ) = Pr (Y ≤ y ) =fY (y )

−2

−4

Guy Yollin (Copyright

©

2011)

Introduction to R

−20

56 / 132

Normal distribution PDF function: dnorm
dnorm computes the normal PDF: φ(z)
mm

40

60

80

100

120

R Code: Plot PDF> args(dnorm)
function (x, mean = 0, sd = 1, log = FALSE)
NULL

40

> x <- seq(from = -5, to = 5, by = 0.01)> x[1:10][1] -5.00 -4.99 -4.98 -4.97 -4.96 -4.95 -4.94 -4.93 -4.92 -4.91> y <- dnorm(x)> y[1:5] 60[1] 1.486720e-06 1.562867e-06 1.642751e-06 1.726545e-06 1.814431e-06> par(mar = par()$mar + c(0,1,0,0))> plot(x=x,y=y,type="l",col="seagreen",lwd=2,
xlab="quantile",ylab="density\ny= dnorm(x)")
80> grid(col="darkgrey",lwd=2)> title(main="Probability Density Function (PDF)")
Guy Yollin (Copyright

©

2011)

Introduction to R

57 / 132

Normal distribution PDF function: dnorm
mm

120

0.0

0.1

60

densityy = dnorm(x)

40

0.2

0.3

0.4

Density Function
40 Probability60
80 (PDF) 100

80−4

Guy Yollin (Copyright

©

−2

0

2

4

quantile
2011)

Introduction to R

58 / 132

Normal distribution CDF functions: pnorm and qnorm
pnorm computes the normal CDF:
mm
40
Pr(X
≤ z) = Φ(z)

60

80

100

120

qnorm computes the inverse of the normal CDF (i.e. quantile):zα = Φ−1 (α)
40 CDFR Code: Plot> args(pnorm)
function (q, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE)
NULL

60> args(qnorm)
function (p, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE)
NULL> y <- pnorm(x)> par(mar = par()$mar + c(0,1,0,0))80> plot(x=x,y=y,type="l",col="seagreen",lwd=2,
xlab="quantile\nx = qnorm(y)",ylab="probability\ny = pnorm(x)") ; grid(col="darkgrey",lwd=2)> title(main="Cumulative Distribution Function (CDF)")
Guy Yollin (Copyright

©

2011)

Introduction to R

59 / 132

Normal distribution CDF functions: pnorm and qnorm
mm

120

0.4
0.0

0.2

60

probability
y = pnorm(x)

40

0.6

0.8

1.0

Cumulative Distribution
Function(CDF)100
40
60
80

80

−4

Guy Yollin (Copyright

©

2011)

−2

0
2
quantilex = qnorm(y)Introduction to R

460 / 132

Generating normally distributed random numbers
The function rnorm generates random numbers from a normal distribution
mm

40

60

80

100

120

R Code: rnorm arguments> args(rnorm)
function (n, mean = 0, sd = 1)
NULL

40

> x <- rnorm(150)> x[1:5][1] -0.6264538

0.1836433 -0.8356286

1.5952808

0.3295078> y <- rnorm(50,sd=3)> y[1:5] 60[1]1.3505613 -0.0556795 -0.9542051 -2.7880864 -4.4623809

n number of observations
mean
80 mean of distribution
sd standard deviation of distribution
Guy Yollin (Copyright

©

2011)

Introduction to R

61 / 132

Histograms
The generic function hist computes a histogram of the given data values
40
R Code: mmhist arguments

60

80

100

120

> args(hist.default)
function (x, breaks = "Sturges", freq = NULL, probability = !freq,
include.lowest = TRUE, right = TRUE, density = NULL, angle = 45,
col = NULL, border = NULL, main = paste("Histogram of", xname),
40
xlim = range(breaks), ylim = NULL, xlab = xname, ylab, axes = TRUE,
plot = TRUE, labels = FALSE, nclass = NULL, warn.unused = TRUE,
...)
NULL

60x vector of histogram data

breaks number of breaks, vector of breaks, name of break algorithm,
break function
prob probability densities or counts
80

ylim y-axis range
col color or bars
Guy Yollin (Copyright

©

2011)

Introduction to R

62 / 132

Plotting histograms
R Code: Plotting histogramsmm> hist(x,col="seagreen")
40

60

80

100

120

30
20
0

5

10

60

15

Frequency

25

40

35

Histogram of x

80

−2

−1

0

1

2

x

Guy Yollin (Copyright

©

2011)

Introduction to R

63 / 132

Plotting histograms
R Code: Plotting histogramsmm> hist(c(x,y),prob=T,breaks="FD",col="seagreen")
40
60

80

100

120

0.2

Density

0.3

40

0.4

Histogram of c(x, y)

0.0

0.1

60

80

−4

−2

0

2

4

6

c(x, y)Guy Yollin (Copyright

©

2011)

Introduction to R

64 / 132

Plotting histograms
R Code: Plotting histogramsmm> hist(c(x,y),prob=T,breaks=50,col="seagreen")
40
60

80

100

120

0.5

Histogram of c(x, y)

0.3
0.0

0.1

60

0.2

Density

0.4

40

80

−4

−2

0

2

4

6

c(x, y)Guy Yollin (Copyright

©

2011)

Introduction to R

65 / 132

Basic stats functions
Short list of some common statistics and math functions:
mm

40

60

80

100

120

mean mean of a vector or matrix
median median of a vector or matrix
mad median absolute deviation of a vector or matrix
40

var variance of a vector or matrix
sd standard deviation of a vector
cov covariance between vectors
60 correlation between vectors
cordiff difference between elements in a vector
log log of a vector or matrix
exp
80 exponentiation of a vector or matrix
abs absolute value of a vector or matrix
Guy Yollin (Copyright

©

2011)

Introduction to R

66 / 132

Outline
1

R language references2

R overview and history

3

R language and environment basics

4

The working directory, data files, and data manipulation

5

Basic statistics and the normal distribution

6

Basic plotting

7

Working with time series in R

8

Variable scoping in R

9

The R help system

10

Web resources
for R
80

11

IDE editors for R

mm

40

60

80

100

120

40

60

Guy Yollin (Copyright

©

2011)

Introduction to R

67 / 132

Basic plotting functionsmm

40

Functionplot
lines
segments
40
pointstext
abline60 curve
legendmatplotparDescription
generic function to plot an R object
adds lines to the current plot
adds lines line segments between point pairs
adds points to the current plot
adds text to the current plot
adds straight lines to the current plot
plot a function over a range
adds a legend to the current plot
plot all columns of a matrix
sets graphics parameters

60

80

100

120

80

Guy Yollin (Copyright

©

2011)

Introduction to R

68 / 132

The plot function
The plot function is a generic function for plotting of R objects
40
R Code: mm
plot arguments

60

80

100

120

> args(plot.default)
function (x, y = NULL, type = "p", xlim = NULL, ylim = NULL,
log = "", main = NULL, sub = NULL, xlab = NULL, ylab = NULL,
ann = par("ann"), axes = TRUE, frame.plot = axes, panel.first = NULL,
40 = NULL, asp = NA, ...)
panel.last
NULL

x vector to be plotted (or index if y given)y vector to be plotted
60
xlim/ylim x & y limited
xlab/ylab x & y axis labels
main plot title (can be done with title function
type ”p” = points (default), ”l” = lines, ”h” = bars, ”n” = no plot80
col color or bars
asp control the aspect ratio
Guy Yollin (Copyright

©

2011)

Introduction to R

69 / 132

The plot function
R Code: Plot with defaults

mm> library(Ecdat)40> data(Capm)> plot(Capm[,"rf"],pch=5)

60

80

100

using pch=5 to fix
presentation bug

120

80

0.8
0.2

0.4

60

0.6

Capm[, "rf"]

1.0

1.2

40

0

Guy Yollin (Copyright

©

100

200

300

400

500

Index
2011)

Introduction to R

70 / 132

The plot function
R Code: Plot with defaults

mm> plot(Capm[,"rf"])

40

60

80

100

120

●

1.2

●
●
● ●
●
● ●●
●●
●●
●
●
● ●
●
●
● ●●
●●
●
●● ●
●
●
●
●
●
●●●● ●
●●
●
●
●
●● ●
●●
●
●●●
●
●
●
●
●●●●
●
●
●
●● ●
●●
●●
●
●●
● ●●
●
●
●●
●
●
●●
●●●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●● ● ●●● ●●●●
●●●
●
●●
●
●
●
●
●
●
●●● ●
●
●●
●
●
●●
● ● ●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
● ●
●
●●●
● ●
●
●
●
●
●
●●
●
●●
●●●●
●
●
● ●●
●●
●●●●
●●
●●
●● ●
●●
●
●
●
●
●● ●
●
●
●
●●●
●
●
●
●
●●
●
● ●
●●
●● ●
●
●
●
●
● ●
●●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●●
●
●●
●
●●
●● ●
● ●
●
●
●● ●●
●
●
●
●
●
●
●●●
●●
●●●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●● ●●
●●●
●
●
●
●
● ●
●●
●
●
●
● ●
●●● ●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
● ●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●●●
● ●●●
●
●
●●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●●
●●●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●●●●
●
●
●
●
●

0.8
0.2

0.4

60

0.6

Capm[, "rf"]

1.0

40

80

0

100

200

300

400

500

Index

Guy Yollin (Copyright

©

2011)

Introduction to R

71 / 132

The plot function
R Code: Plot lines

80

100

120

0.8
0.2

0.4

60

0.6

Capm[, "rf"]

1.0

40

60

1.2

mm
> plot(Capm[,"rf"],type="l")
40

80

0

100

200

300

400

500

Index

Guy Yollin (Copyright

©

2011)

Introduction to R

72 / 132

The plot function
R Code: Plot bars

1200

Capm[, "rmrf"]

100

−20

60

80

−10

40

60

10

mm
> plot(Capm[,"rmrf"],type="h")
40

80

0

100

200

300

400

500

Index

Guy Yollin (Copyright

©

2011)

Introduction to R

73 / 132

The plot function
R Code: XY plotmm
> plot(Capm[,"rmrf"],Capm[,"rcon"],pch=5)
40
60

120

20

100

0
−30

−20

60

−10

Capm[, "rcon"]

10

40

80

80

−20

−10

0

10

Capm[, "rmrf"]

Guy Yollin (Copyright

©

2011)

Introduction to R

74 / 132

The points function
mm

40

60

80

100

120

The points function adds points to the current plot at the given x, y
coordinates
40

R Code: points arguments> args(points.default)
function (x, y = NULL, type = "p", ...)
NULL

60

x vector of x coordinates
y vector of y coordinates
80

Guy Yollin (Copyright

©

2011)

Introduction to R

75 / 132

The lines function
mm

40

60

80

100

120

The lines function adds connected line segments to the current plot
R Code: lines
40 arguments> args(lines.default)
function (x, y = NULL, type = "l", ...)NULL

60x vector of x coordinates

y vector of y coordinates
80

Guy Yollin (Copyright

©

2011)

Introduction to R

76 / 132

The text function
The text
function adds
text labels
to a plot at80given x, y 100
coordinates 120
mm
4060
R Code: text arguments> args(text.default)

40 y = NULL, labels = seq_along(x), adj = NULL, pos = NULL,
function (x,offset = 0.5, vfont = NULL, cex = 1, col = NULL, font = NULL,
...)
NULL

x/y
60 location to place text
labels text to be display
adj adjustment of label at x, y location
pos position of text relative to x, y
80
offsetoffset from pos

Guy Yollin (Copyright

©

2011)

Introduction to R

77 / 132

Plotting a blank frame
R Code: Plotting a blank framemm> plot(0,xlim=c(-20,20),ylim=c(-20,20),type="n",406080xlab="market return",ylab="construction return")

20
10
0

construction return

80

−10

60

120

−20

40

100

−20

−10

0

10

20

market return
Guy Yollin (Copyright

©

2011)

Introduction to R

78 / 132

A blank frame with points, lines, and text added
R Code: Adding points, lines, and text to a blank framemm> plot(0,xlim=c(-20,20),ylim=c(-20,20),type="n",406080xlab="market return",ylab="construction return")> points(x=Capm[,"rmrf"],y=Capm[,"rcon"],pch=5,col="gray")> lines(x=-20:20,y=-20:20,lwd=2,col="darkred")> text(20,20,labels="slope = 1",pos=2)

100

120

80

−10

0

10

slope = 1

−20

60

construction return

20

40

−20

Guy Yollin (Copyright

©

−10

0

10

20

market return

2011)

Introduction to R

79 / 132

The segments function
mm

40

60

80

100

120

The segments function draws line segments between point pairs
R Code: segments arguments

40> args(segments)
function (x0, y0, x1 = x0, y1 = y0, col = par("fg"), lty = par("lty"),lwd = par("lwd"), ...)
NULL

60

x0, y0 point coordinates from which to draw
x1, y1 point coordinates to which to draw
80

Guy Yollin (Copyright

©

2011)

Introduction to R

80 / 132

The curve function
The curve
a curve60of a function
mmfunction draws
40
80or expression
100 over a range
120
R Code: curve arguments> args(curve)40function (expr,
from = NULL, to = NULL, n = 101, add = FALSE,
type = "l", ylab = NULL, log = NULL, xlim = NULL, ...)
NULL

expr function or expression of x
60

from start of range
to end of range
n number of points over from/to range
add
80 add to current plot (T/F)

Guy Yollin (Copyright

©

2011)

Introduction to R

81 / 132

The abline function
mm

40

60

80

100

120

The abline function adds one or more straight lines through the current
plot
40
R Code: abline
arguments> args(abline)function (a = NULL, b = NULL, h = NULL, v = NULL, reg = NULL,
coef = NULL, untf = FALSE, ...)
NULL

60

h/v vertical or horizontal coordinate of line
a/b intercept and slope of line
80

Guy Yollin (Copyright

©

2011)

Introduction to R

82 / 132

The matplot function
mm

40

60

80

100

120

The matplot function plots multiple columns of a matrix versus an index
R Code: matplot arguments

40> args(matplot)
function (x, y, type = "p", lty = 1:5, lwd = 1, lend = par("lend"),pch = NULL, col = 1:6, cex = NULL, bg = NA, xlab = NULL,
ylab = NULL, xlim = NULL, ylim = NULL, ..., add = FALSE,
verbose = getOption("verbose"))60
NULL

x/y matrices or vectors to be plotted80

Guy Yollin (Copyright

©

2011)

Introduction to R

83 / 132

Graphical parameters controlled via the par function
R is capableby allowing
mm of producing
40 publication
60 quality graphics
80100(requiring ) fine-grained control of a number of graphics parameters

120

R Code: Names of graphical parameters> names(par())

40[1] "xlog"[7] "bty"[13] "cin"[19] "cra"[25] "family"
60[31] "font.lab"[37] "lheight"[43] "mar"[49] "mkh"[55] "pin"[61] "tck"[67] "xpd"80

Guy Yollin (Copyright"ylog""adj""cex""cex.axis""col""col.axis"
"crt"
"csi"
"fg"
"fig"
"font.main" "font.sub""ljoin""lmitre""mex""mfcol"
"new"
"oma"
"plt"
"ps"
"tcl"
"usr"
"yaxp""yaxs"

©

2011)

"ann"
"cex.lab""col.lab"
"cxy"
"fin"
"lab"
"lty"
"mfg"
"omd"
"pty"
"xaxp""yaxt"

Introduction to R

"ask"
"cex.main""col.main""din""font""las""lwd""mfrow""omi""smo""xaxs""bg""cex.sub""col.sub""err""font.axis""lend"
"mai"
"mgp"
"pch"
"srt"
"xaxt"

84 / 132

Commonly used par parameters
mm

40

60

Parameter
40
col
lwd
lyt
mfrow
cex.axis
cex.labcex.main
pch
las
bty

Description
60
80
100
plot colorline widthline typeset/reset multi-plot layout
character expansion - axis
character expansion - labels
character expansion - main
point character
axis label orientation
box type around plot or legend120

some80parameters can be passed in a plot function (e.g. col, lwd)
some parameters can only be changed by a call to par (e.g. mfrow)
Guy Yollin (Copyright

©

2011)

Introduction to R

85 / 132

The legend function
R Code: legend arguments

mm> args(legend)

40

60

80

100

120

function (x, y = NULL, legend, fill = NULL, col = par("col"),border = "black", lty, lwd, pch, angle = 45, density = NULL,
bty = "o", bg = par("bg"), box.lwd = par("lwd"), box.lty = par("lty"),box.col = par("fg"), pt.bg = NA, cex = 1, pt.cex = cex, pt.lwd = lwd,
xjust 40
= 0, yjust = 1, x.intersp = 1, y.intersp = 1, adj = c(0,0.5), text.width = NULL, text.col = par("col"), merge = do.lines &&has.pch, trace = FALSE, plot = TRUE, ncol = 1, horiz = FALSE,
title = NULL, inset = 0, xpd, title.col = text.col, title.adj = 0.5,
seg.len = 2)
NULL

60

x/y location of the legend (can be give as a position name)legend vector of labels for the legend
col vector of colors
lty
80 line typelwd line width
pch character
Guy Yollin (Copyright

©

2011)

Introduction to R

86 / 132

The barplot function
The barplot function can create vertical or horizontal barplotsmm40

R Code: barplot arguments

60

80

100

120

> args(barplot.default)

function (height, width = 1, space = NULL, names.arg = NULL,
legend.text = NULL, beside = FALSE, horiz = FALSE, density = NULL,
angle 40
= 45, col = NULL, border = par("fg"), main = NULL,
sub = NULL, xlab = NULL, ylab = NULL, xlim = NULL, ylim = NULL,
xpd = TRUE, log = "", axes = TRUE, axisnames = TRUE, cex.axis = par("cex.axis"),cex.names = par("cex.axis"), inside = TRUE, plot = TRUE,
axis.lty = 0, offset = 0, add = FALSE, args.legend = NULL,
...)
NULL
60

height vector or matrix (stacked bars or side-by-side bars) of heights
names.arg axis labels for the bars
beside80 stacked bars or side-by-side if height is a matrix
legend vector of labels for stacked or side-by-side bars
Guy Yollin (Copyright

©

2011)

Introduction to R

87 / 132

Outline
1

R language references2

R overview and history

3

R language and environment basics

4

The working directory, data files, and data manipulation

5

Basic statistics and the normal distribution

6

Basic plotting

7

Working with time series in R

8

Variable scoping in R

9

The R help system

10

Web resources
for R
80

11

IDE editors for R

mm

40

60

80

100

120

40

60

Guy Yollin (Copyright

©

2011)

Introduction to R

88 / 132

Time series data
Time Seriesmm
40
60 data points
80 measured
100at specific120
A time series
is a sequenceof ordered
points in time

A time series class in R is a compound data object that includes a data
matrix as40well as a vector of associated time stamps
class
ts
60
mts
its
timeSeries
fts
zoo 80xts
Guy Yollin (Copyrightpackagebase
basetseries
rmetrics
fts
zoo
xts

©

2011)

overview
regularly spaced time series
multiple regularly spaced time series
irregularly spaced time series
default for Rmetrics packages
R interface to tslib (c++ time series library)reg/irreg and arbitrary time stamp classes
an extension of the zoo class
Introduction to R

89 / 132

Time series methods
Time series classes in R will typically implement the following methods:
mm

40

60

80

100

120

start return start of time series
end return end of time series
frequency return frequency of time series
40

window Extract subset of time series
index return time index of time series
time return time index of time series
60 return data of time series
coredatadiff difference of the time series
lag lag of the time series
aggregate
aggregate to lower resolution time series
80cbind merge 2 or more time series together
Guy Yollin (Copyright

©

2011)

Introduction to R

90 / 132

Creating a zoo object
mm40

R Code: Creating a zoo object

60

80

100

120

> library(zoo)> msft.df <- read.table("table.csv", header = TRUE, sep = ",", as.is = TRUE)> head(msft.df,2)DateVolume Adj.Close
40 Open High Low Close
1 2010-09-13 24.20 25.29 24.09 25.11 114606300
25.11
2 2010-09-10 23.98 24.03 23.79 23.85 58284300
23.85> args(zoo)function (x = NULL, order.by = index(x), frequency = NULL)
60
NULL> msft.z <- zoo(x=msft.df[,"Close"],order.by=as.Date(msft.df[,"Date"]))> head(msft.z)
2009-01-02 2009-01-05 2009-01-06 2009-01-07 2009-01-08 2009-01-09
20.33
20.52
20.76
19.51
20.12
19.52

80

Guy Yollin (Copyright

©

2011)

Introduction to R

91 / 132

Inspecting a zoo object
R Code: mm
Inspecting a zoo
40 object

60

80

100

120

> class(msft.z)[1] "zoo"> start(msft.z)[1] "2009-01-02"
40> end(msft.z)[1] "2010-09-13"> frequency(msft.z)
[1] 1

60

> class(coredata(msft.z))[1] "numeric"> class(time(msft.z))

80[1] "Date"

Guy Yollin (Copyright

©

2011)

Introduction to R

92 / 132

Plotting a zoo object
R Code: Plotting a zoo object

mm> plot(msft.z,xlab="",ylab="$",
main="Microsoft
Stock
40
60
80 Price")

100

120

$

25

40

30

Microsoft Stock Price

15

20

60

80
2009

Guy Yollin (Copyright

©

2011)

2010

Introduction to R

93 / 132

S&P 500 Jan-1981 to Apr-1991
40

80
S&P60
500 daily returns

1982

1984

100

120

log return

40

−0.10

0.00 0.05

mm

−0.20

60

80

1986

1988

1990

year

SDAFE Fig 4.1
Guy Yollin (Copyright

©

2011)

Introduction to R

95 / 132

Plot S&P 500 returns
R Code: Plot SP500 returns

mm> # figure
4.1> library(Ecdat)> data(SP500)> class(SP500)

40

60

80

100

120

[1] "data.frame"40> dim(SP500)[1] 2783

1> SPreturn = SP500$r500> head(SPreturn)60[1] -0.0117265

0.0024544

0.0110516

0.0190512 -0.0055657 -0.0043148> n = length(SPreturn)> year_SP = 1981 + (1:n)*(1991.25-1981)/n> head(year_SP)[1] 1981.004 1981.007 1981.011 1981.015 1981.018 1981.022

80> plot(x=year_SP,y=SPreturn,type="h",xlab="year",ylab="log return")> title("S&P 500 daily returns")
Guy Yollin (Copyright

©

2011)

Introduction to R

96 / 132

Deutsche Mark exchange rate Jan-1980 to May-1987
mm

100

120

0.005
−0.01560−0.00540change in rate

0.015

40 changes in 60
80 rateDM/dollar exchange

1980

80

1982

1984

1986

year

SDAFE Fig 4.2
Guy Yollin (Copyright

©

2011)

Introduction to R

98 / 132

Plot DM returns
R Code: Plot DM returns> # figure
4.2mm> library(zoo)> data(Garch)> head(Garch)

40

60

80

100

120

date
day
dm
ddm
bp
cd
dy
sf
1 800102 wednesday 0.5861
NA 2.2490 0.8547 0.004206 0.6365
40
2 800103 thursday 0.5837 -0.0041032713 2.2365 0.8552 0.004187 0.6357
3 800104
friday 0.5842 0.0008562377 2.2410 0.8566 0.004269 0.6355
4 800107
monday 0.5853 0.0018811463 2.2645 0.8538 0.004315 0.6373
5 800108
tuesday 0.5824 -0.0049670394 2.2560 0.8553 0.004257 0.6329
6 800109 wednesday 0.5834 0.0017155606 2.2650 0.8565 0.004245 0.6349

60> dm <- zoo(x=Garch[,"dm"],order.by=as.Date(x=as.character(Garch[,"date"]),format="%y%m%d"))> head(dm)1980-01-02 1980-01-03 1980-01-04 1980-01-07 1980-01-08 1980-01-09
0.5861
0.58370.58420.58530.5824
0.583480diff(dm)> diffdm <> plot(diffdm,xlab="year",ylab="change in rate",type="h")> title("changes in DM/dollar exchange rate")
Guy Yollin (Copyright

©

2011)

Introduction to R

99 / 132

T-bill rate changes Jan-1960 to Dec-2002
mm

100

120

0.0
−0.2

40

change in rate

0.2

40 changes in60
80returnrisk−free interest

−0.4

60

1960

80

1970

1980

1990

2000

year

SDAFE Fig 4.3
Guy Yollin (Copyright

©

2011)

Introduction to R

101 / 132

Plot T-bill rate changes
R Code: Plot T-bill rate changes

mm40> # figure 4.3> data(Capm)> head(Capm)

60

80

100

120

rfood rdur rcon rmrf
rf
1 -4.59 0.87 -6.84 -6.99 0.33
40 2.78 0.99 0.29
2 2.62 3.46
3 -1.67 -2.28 -0.48 -1.46 0.35
4 0.86 2.41 -2.02 -1.70 0.19
5 7.34 6.33 3.69 3.08 0.27
6 4.99 -1.26 2.05 2.09 0.24
> rf <- zooreg(Capm[,"rf"],
frequency = 12, start = c(1960, 1),end=c(2002,12))60> head(rf)1960(1) 1960(2) 1960(3) 1960(4) 1960(5) 1960(6)
0.33
0.29
0.35
0.19
0.27
0.24
> diffrf <- diff(rf)80> plot(diffrf,xlab="year",ylab="change
in rate")> title("changes in risk-free interest return")

Guy Yollin (Copyright

©

2011)

Introduction to R

102 / 132

Outline
1

R language references2

R overview and history

3

R language and environment basics

4

The working directory, data files, and data manipulation

5

Basic statistics and the normal distribution

6

Basic plotting

7

Working with time series in R

8

Variable scoping in R

9

The R help system

10

Web resources
for R
80

11

IDE editors for R

mm

40

60

80

100

120

40

60

Guy Yollin (Copyright

©

2011)

Introduction to R

103 / 132

Free variables
mm of a function,
40 3 types60
80 be found:100
In the bodyof symbols may

120

formal parameters - arguments passed in the function calllocal variables - variables created in the function
free 40
variables - variables created outside of the function(note, free variables become local variables if you assign to them)R Code: Types of variables in functions60> f <- function(x){y <- 2*x
print(x) # formal parameter
print(y) # local variable
print(z) # free variable}
80

Guy Yollin (Copyright

©

2011)

Introduction to R

104 / 132

Environments
mm
The mainworkspace inwith
40 R (i.e. what
60 you are interacting
80
100at the R 120
console) is called the global environment

According to the scoping rules of R (referred to a lexical scoping), R will
search for a free variable in the following order:
40
1

The environment in which the function was created
For functions created in the global environment, this will be the global
environment2

The 60parent environment of the environment where the function was
created3

The parent of the parent ... up until the global environment issearched4

The 80search path of loaded libraries found using the search() function

Guy Yollin (Copyright

©

2011)

Introduction to R

105 / 132

The search path
mm

40

60

80

100

120

The function search returns a list of attached packages which will besearched in order (after the global environment) when trying to resolve a
free variable
40
R Code: The search path> search()[1] ".GlobalEnv"[4] "package:nutshell"
60[7] "package:graphics"[10] "package:datasets"[13] "package:base""package:zoo""package:Ecdat""package:patchDVI" "package:stats""package:grDevices" "package:utils""package:methods""Autoloads"

80

Guy Yollin (Copyright

©

2011)

Introduction to R

106 / 132

Variable scoping examples
mm

40examples
R Code: Variable scoping

60

80

100

120

> # example 1> a <- 10> x <- 5> f <- function (x) x + a> f(2)
40[1] 12> # example 2> f<- function (x){a<-5 60g(x)}> g <- function(y) y + a> f(2)[1] 1280

Guy Yollin (Copyright

©

2011)

Introduction to R

107 / 132

Variable scoping examples
mm40

R Code: Variable scoping examples

60

80

100

120

> # example 3> f <- function (x) {a<-5g <- function (y) y + ag(x) 40}> f(2)[1] 7> # example 460> f <- function (x) {x + mean(rivers) # rivers is defined in the dataset package}> f(2)[1] 593.1844

80

Guy Yollin (Copyright

©

2011)

Introduction to R

108 / 132

Outline
1

R language references2

R overview and history

3

R language and environment basics

4

The working directory, data files, and data manipulation

5

Basic statistics and the normal distribution

6

Basic plotting

7

Working with time series in R

8

Variable scoping in R

9

The R help system

10

Web resources
for R
80

11

IDE editors for R

mm

40

60

80

100

120

40

60

Guy Yollin (Copyright

©

2011)

Introduction to R

109 / 132

The HTML help system
mm

40

60

80

100

120

R has a comprehensive HTML help
facility
Run the
40 help.start function
R GUI menu item
Help|Html help
60
R Code: Starting HTML help
> help.start()
If nothing happens, you should open'http://127.0.0.1:24487/doc/html/index.html' yourself
80

Guy Yollin (Copyright

©

2011)

Introduction to R

110 / 132

The help function
mm

40

60

80

100

120

One can also obtain help on aparticular topic via the help function
40

help(topic)?topicR Code: Topic
60 help> help(read.table)

80

Guy Yollin (Copyright

©

2011)

Introduction to R

111 / 132

The RSiteSearch function
mm

40

60

80

100

120

The function RSiteSearch can beused to search the R website
40 help for all packages
HTMLR-help archives

60
R Code: Running RSiteSearch> library(RSiteSearch)> RSiteSearch("ODBC")

80

A search query has been submitted to http://search.r-project.org
The results page should open in your browser shortly
Guy Yollin (Copyright

©

2011)

Introduction to R

112 / 132

Outline
1

R language references2

R overview and history

3

R language and environment basics

4

The working directory, data files, and data manipulation

5

Basic statistics and the normal distribution

6

Basic plotting

7

Working with time series in R

8

Variable scoping in R

9

The R help system

10

Web resources
for R
80

11

IDE editors for R

mm

40

60

80

100

120

40

60

Guy Yollin (Copyright

©

2011)

Introduction to R

113 / 132

R Homepage
mm

40

60

80

100

120

http://www.r-project.org
40

List of CRAN mirror sites
Manuals
FAQs
60 Lists
Mailing

Links

80

Guy Yollin (Copyright

©

2011)

Introduction to R

114 / 132

CRAN - Comprehensive R Archive Network
mm

40

60

80

100

120

http://cran.fhcrc.org
CRAN Mirrors

40
About 75 sites worldwide
About 16 sites in US

R Binaries
R Packages
60
R Sources
Task Views
80

Guy Yollin (Copyright

©

2011)

Introduction to R

115 / 132

CRAN Task Views
mm

40

60

80

100

120

Organizes the 2600+ R packages byapplication
40

FinanceTime Series
Econometrics
60

Optimization
Machine Learning
80

Guy Yollin (Copyright

©

2011)

Introduction to R

116 / 132

Statconn
http://rcom.univie.ac.at
mm
40

60

80

100

120

COM interface for R connectivity
Excel
Word40C#
VBDelphi60

Download site for RAndFriends
R
Statconn80
Notepad++Guy Yollin (Copyright

©

2011)

Introduction to R

117 / 132

R-SIG-FINANCE
mm

40

60

80

100

120

https://stat.ethz.ch/mailman/
listinfo/r-sig-finance40

Nerve center of the R financecommunity
Daily must read
Exclusively
for Finance-specific60
questions, not general R
questions
80

Guy Yollin (Copyright

©

2011)

Introduction to R

118 / 132

Google’s R Style Guide
mm

40

60

80

100

120

http://google-styleguide.
googlecode.com/svn/trunk/
40
google-r-style.html
Naming convention
Coding60 Syntax
Program Organization

80

Guy Yollin (Copyright

©

2011)

Introduction to R

119 / 132

Quick R
mm

40

60

80

100

120

http://www.statmethods.net
Introductory R Lessons
40
R Interface

Data Input
Data Management
Basic Statistics
60

Advanced Statistics
Basic Graphs
Advanced Graphs
80

Guy Yollin (Copyright

©

2011)

Introduction to R

120 / 132

R graphics details, colors, and other tech notes
mmand other 40
R Graphics
useful information
by Earl
Institute
60
80 Glynn of Stowers
100
120
for Medical Research

URL
http://research.stowers-institute.org/efg/R/index.htm
40
Features
R Color Chart
Using Color in R (great presentation)
60
Plot area, margins, multiple figures
Mixture models
Distance measures and clustering
Using Windows Explorer to Start R with Specified Working Directory
80(under tech notes)

Guy Yollin (Copyright

©

2011)

Introduction to R

121 / 132Seven Tips for Surviving R
mm

40

60

80

100

120

A presentation from the Bay Area R Users Meetup by John Mount
Link40
to presentation
http://www.win-vector.com/dfiles/SurviveR.pdf

Link to step-by-step tutorial
http://www.win-vector.com/blog/2009/11/
60
r-examine-objects-tutorial

80

Guy Yollin (Copyright

©

2011)

Introduction to R

122 / 132

Programming in R
mm

40
60
80
Online R programmingn
manual from
UC Riverside

100

120

URL
http://manuals.bioinformatics.ucr.edu/home/programming-in-r

40

Selected Topics
R Basics
Finding Help60
Code Editors for R
Control Structures
FunctionsObject Oriented Programming
Building R Packages
80

Guy Yollin (Copyright

©

2011)

Introduction to R

123 / 132

Other useful R sites
mm R specific
40 search site60
80
R Seekhttp://www.rseek.org/

100

120

R Bloggers Aggregation of about 100 R blogs
http://www.r-bloggers.com
40

Stack Overflow Excellent developer Q&A forum
http://stackoverflow.com
R Graph Gallery Examples of many possible R graphs
http://addictedtor.free.fr/graphiques
60
Revolution Blog Blog from David Smith of Revolution
http://blog.revolutionanalytics.com
Inside-R R community site by Revolution Analytics
80
http://www.inside-r.org
Guy Yollin (Copyright

©

2011)

Introduction to R

124 / 132

Outline
1

R language references2

R overview and history

3

R language and environment basics

4

The working directory, data files, and data manipulation

5

Basic statistics and the normal distribution

6

Basic plotting

7

Working with time series in R

8

Variable scoping in R

9

The R help system

10

Web resources
for R
80

11

IDE editors for R

mm

40

60

80

100

120

40

60

Guy Yollin (Copyright

©

2011)

Introduction to R

125 / 132

RStudio
RStudio is an fully-featured open-source IDE
mm
40
60
80
for R

100

120

R language highlighting
Paste/Sourcecode to R
40
object explorer
graphics window in main IDE
60 provides a server-based version
RStudio also
(R running in the cloud). Request a freeaccount from josh@rstudio.org (be sure
to reference the UW Computational Financeprogram) 80
RStudio is highly recommended
Guy Yollin (Copyright

©

2011)

Introduction to R

126 / 132

Revolution R Enterprize Visual Development Environment
mm
Revolution
Analytics is40a company 60that sells a commercial distributionof R including a desktop IDE

80

100

120

Revolution40R Enterprize is free toacademic users
R language highlighting
Paste/Source code to R
60

object explorer
runs R in SDI mode
http://www.revolutionanalytics.com
80

Guy Yollin (Copyright

©

2011)

Introduction to R

127 / 132

Notepad++ and NpptoR
NpptoR ismm
an automation
widget 60
40(based on AuotHotkey) which allows
the very useful program editor
Notepad++ to interact with R

80

100

120

40

R language highlighting
Paste/Source code to R
Supports R in SDI mode
60 installed as part ofCan beRAndFriends

http://notepad-plus-plus.org
80
http://sourceforge.net/projects/npptor
http://rcom.univie.ac.at/download.html
Guy Yollin (Copyright

©

2011)

Introduction to R

128 / 132

StatET - An Eclipse Plug-In for R
mm

40

StatET is a plug-in for the
open-source Eclipse development
environment

60

80

100

120

40

R language highlighting
Paste/Source code to R
Supports R in SDI mode
60 documentation by
ExcellentLonghow Lam

http://www.walware.de/goto/statet
80

Guy Yollin (Copyright

©

2011)

Introduction to R

129 / 132

R-WinEdit
mm

40

60

80

100

120

Based on WinEdt, an excellent
shareware editor with support for
LATEXand Sweave development40

R language highlighting
Paste/Source code to R
Supports R in MDI mode
60

Paste/Source code to S-PLUS

80
http://www.winedt.com
http://cran.r-project.org/web/packages/RWinEdt
Guy Yollin (Copyright

©

2011)

Introduction to R

130 / 132

Other R IDE links
mm

40

60

80

100

120

Tinn-R Popular R IDE
http://www.sciviews.org/Tinn-R
40

ESS Emacs Speaks Statistics
http://ess.r-project.org
60

other R GUI Projects
http://www.sciviews.org/_rgui
80

Guy Yollin (Copyright

©

2011)

Introduction to R

131 / 132

The End
mm

40

60

80

100

120

40

60

80

Guy Yollin (Copyright

©

2011)

Introduction to R

132 / 132