Вы находитесь на странице: 1из 53

Computational Finance and Risk Management

R Programming
for Quantitative Finance

Guy Yollin
Applied Mathematics
University of Washington

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 1 / 53


Outline

1 R language overview and history

2 R language references

3 Short R Tutorial

4 The R help system

5 Web resources for R

6 IDE editors for R

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 2 / 53


Lecture references

J. Adler.
R in a Nutshell: A Desktop Quick Reference.
OReilly Media, 2010.
Chapters 1-3

W. N. Venables and D. M. Smith.


An Introduction to R.
2013.
Sections 1-3

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 3 / 53


Outline

1 R language overview and history

2 R language references

3 Short R Tutorial

4 The R help system

5 Web resources for R

6 IDE editors for R

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 4 / 53


The R programming language

R is a language and environment for statistical computing and


graphics

R is based on the S language originally developed by John Chambers


and colleagues 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)

R development was initiated by Robert Gentleman and Ross Ihaka at


the University of Auckland, New Zealand in the 1990s

R is formally known as The R Project for Statistical Computing


www.r-project.org

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 5 / 53


Strengths of the R programming language

HAM1 Performance

4.0
HAM1
EDHEC LS EQ

3.5
SP500 TR

3.0
Cumulative Return

2.5
Data manipulation

2.0
1.5
1.0
Data analysis

0.05
Monthly Return

0.00
0.05
Statistical modeling

0.0 0.10
0.1
Drawdown

0.2
Data visualization
0.3
0.4

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

Plot from the PerformanceAnalytics package

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 6 / 53


S language implementations

R is the most recent and full-featured


implementation of the S language

Original S - AT & T Bell Labs

S-PLUS (S plus a GUI)


Statistical Sciences, Inc.
Mathsoft, Inc.
Insightful, Inc.
Tibco, Inc.

R - The R Project for Statistical


Figure from The History of S and R, John Chambers, 2006
Computing


Founded by UW Professor Doug Martin, CompFin Program Director
Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 7 / 53
R timeline

1991
1999
Statistical Models in S
John Chambers
(white book)
1998 ACM Software Award
S3 methods
2001
1984 R 1.4.0
S: An Interactive Envirnoment for (S4) 2002 2010
2000
Data Analysis and Graphics 1988 Modern Applied Statistics R&R
R 1.0.0
(Brown Book) The New S Language with S Given ASA
1993 (S3)
Written in C 4th Edition Statistical Computing
R on Statlib 2004
(Blue Book) (S+ 6.x, R 1.5.0) and Graphics Award
Work on S 1997 R 2.0.0
Version 1 R on CRAN
GNU Project

1976 2011

Modern Applied Statistics


StatSci Licenses S Exponential
S-PLULS with S-PLUS
1993 2nd Edition growth of
developed by
Modern Applied Statistics 1997 Modern Applied Statistics R Users and
Statistical Sciences, Inc.
with S-PLUS with S-PLUS R packages
1988
1994 Programming with Data 3rd Edition
(Green Book) (S+ 2000, 5.x)
(S+ 5.x) (R complements)
1998 1999

S era S-PLUS era R era

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 8 / 53


Recognition of software excellence

Association for Computing American Statistical


Machinery Association
John Chambers received the 1998 Robert Gentleman and Ross
ACM Software System Award Ihaka received the 2009 ASA
Dr. Chambers work Statistical Computing and
will forever alter the Graphics Award
way people analyze, In recognition for their
visualize, and work in initiating the R
manipulate data Project for Statistical
Computing

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 9 / 53


Outline

1 R language overview and history

2 R language references

3 Short R Tutorial

4 The R help system

5 Web resources for R

6 IDE editors for R

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 10 / 53


Essential web resources

An Introduction to R R Reference Card 2.0


W.N. Venables, D.M. Smith Baggott & Short
R Development Core Team

R Reference Card cat(..., file="", sep=" ") prints the arguments after coercing to Slicing and extracting data
character; sep is the character separator between arguments Indexing lists
by Tom Short, EPRI Solutions, Inc., tshort@eprisolutions.com 2005-07-12 print(a, ...) prints its arguments; generic, meaning it can have differ- x[n] list with elements n
Granted to the public domain. See www.Rpad.org for the source and latest ent methods for different objects x[[n]] nth element of the list
version. Includes material from R for Beginners by Emmanuel Paradis (with format(x,...) format an R object for pretty printing x[["name"]] element of the list named "name"
permission). write.table(x,file="",row.names=TRUE,col.names=TRUE, x$name id.
sep=" ") prints x after converting to a data frame; if quote is TRUE, Indexing vectors
character or factor columns are surrounded by quotes ("); sep is the x[n] nth element
field separator; eol is the end-of-line separator; na is the string for x[-n] all but the nth element
Help and basics missing values; use col.names=NA to add a blank column header to
get the column headers aligned correctly for spreadsheet input
x[1:n] first n elements
Most R functions have online documentation. x[-(1:n)] elements from n+1 to the end
sink(file) output to file, until sink() x[c(1,4,2)] specific elements
help(topic) documentation on topic
Most of the I/O functions have a file argument. This can often be a charac- x["name"] element named "name"
?topic id.
ter string naming a file or a connection. file="" means the standard input or x[x > 3] all elements greater than 3
help.search("topic") search the help system
output. Connections can include files, pipes, zipped files, and R variables. x[x > 3 & x < 5] all elements between 3 and 5
apropos("topic") the names of all objects in the search list matching
On windows, the file connection can also be used with description = x[x %in% c("a","and","the")] elements in the given set
the regular expression topic
"clipboard". To read a table copied from Excel, use Indexing matrices
help.start() start the HTML version of help
x <- read.delim("clipboard") x[i,j] element at row i, column j
str(a) display the internal *str*ucture of an R object
To write a table to the clipboard for Excel, use x[i,] row i
summary(a) gives a summary of a, usually a statistical summary but it is
write.table(x,"clipboard",sep="\t",col.names=NA) x[,j] column j
generic meaning it has different operations for different classes of a
For database interaction, see packages RODBC, DBI, RMySQL, RPgSQL, and x[,c(1,3)] columns 1 and 3
ls() show objects in the search path; specify pat="pat" to search on a
ROracle. See packages XML, hdf5, netCDF for reading other file formats. x["name",] row named "name"
pattern
ls.str() str() for each variable in the search path Data creation Indexing data frames (matrix indexing plus the following)
dir() show files in the current directory x[["name"]] column named "name"
c(...) generic function to combine arguments with the default forming a
methods(a) shows S3 methods of a x$name id.
vector; with recursive=TRUE descends through lists combining all
methods(class=class(a)) lists all the methods to handle objects of elements into one vector
class a from:to generates a sequence; : has operator priority; 1:4 + 1 is 2,3,4,5
options(...) set or examine many global options; common ones: width, seq(from,to) generates a sequence by= specifies increment; length= Variable conversion
digits, error specifies desired length
library(x) load add-on packages; library(help=x) lists datasets and as.array(x), as.data.frame(x), as.numeric(x),
seq(along=x) generates 1, 2, ..., length(x); useful for for loops
functions in package x. as.logical(x), as.complex(x), as.character(x),
rep(x,times) replicate x times; use each= to repeat each el-
attach(x) database x to the R search path; x can be a list, data frame, or R ... convert type; for a complete list, use methods(as)
ement of x each times; rep(c(1,2,3),2) is 1 2 3 1 2 3;
data file created with save. Use search() to show the search path. rep(c(1,2,3),each=2) is 1 1 2 2 3 3 Variable information
detach(x) x from the R search path; x can be a name or character string data.frame(...) create a data frame of the named or unnamed is.na(x), is.null(x), is.array(x), is.data.frame(x),
of an object previously attached or a package. arguments; data.frame(v=1:4,ch=c("a","B","c","d"),n=10); is.numeric(x), is.complex(x), is.character(x),
Input and output shorter vectors are recycled to the length of the longest
list(...) create a list of the named or unnamed arguments;
... test for type; for a complete list, use methods(is)
load() load the datasets written with save length(x) number of elements in x
list(a=c(1,2),b="hi",c=3i); dim(x) Retrieve or set the dimension of an object; dim(x) <- c(3,2)
data(x) loads specified data sets
array(x,dim=) array with data x; specify dimensions like dimnames(x) Retrieve or set the dimension names of an object
read.table(file) reads a file in table format and creates a data
dim=c(3,4,2); elements of x recycle if x is not long enough nrow(x) number of rows; NROW(x) is the same but treats a vector as a one-
frame from it; the default separator sep="" is any whitespace; use
matrix(x,nrow=,ncol=) matrix; elements of x recycle row matrix
header=TRUE to read the first line as a header of column names; use
factor(x,levels=) encodes a vector x as a factor ncol(x) and NCOL(x) id. for columns
as.is=TRUE to prevent character vectors from being converted to fac-
gl(n,k,length=n*k,labels=1:n) generate levels (factors) by spec- class(x) get or set the class of x; class(x) <- "myclass"
tors; use comment.char="" to prevent "#" from being interpreted as
ifying the pattern of their levels; k is the number of levels, and n is unclass(x) remove the class attribute of x
a comment; use skip=n to skip n lines before reading data; see the
the number of replications attr(x,which) get or set the attribute which of x
help for options on row naming, NA treatment, and others
expand.grid() a data frame from all combinations of the supplied vec- attributes(obj) get or set the list of attributes of obj
read.csv("filename",header=TRUE) id. but with defaults set for
tors or factors
reading comma-delimited files
rbind(...) combine arguments by rows for matrices, data frames, and Data selection and manipulation
read.delim("filename",header=TRUE) id. but with defaults set which.max(x) returns the index of the greatest element of x
others
for reading tab-delimited files which.min(x) returns the index of the smallest element of x
cbind(...) id. by columns
read.fwf(file,widths,header=FALSE,sep="",as.is=FALSE) rev(x) reverses the elements of x
read a table of f ixed width f ormatted data into a data.frame; widths sort(x) sorts the elements of x in increasing order; to sort in decreasing
is an integer vector, giving the widths of the fixed-width fields order: rev(sort(x))
save(file,...) saves the specified objects (...) in the XDR platform- cut(x,breaks) divides x into intervals (factors); breaks is the number
independent binary format of cut intervals or a vector of cut points
save.image(file) saves all objects

Definitely obtain these PDF files from the R homepage or a CRAN mirror
Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 11 / 53
Introductory texts

R in a Nutshell: A Desktop A Beginners Guide to R


Quick Reference Zuur, Ieno, Meesters
Joseph Adler Springer, 2009
OReilly Media, 2009

Both texts available online through UW library


Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 12 / 53
Introductory texts

R in Action The Art of R Programming


Robert Kabacoff Norman Matloff
Manning Publications, 2011 No Starch Press, 2011

THE

U iv>Vi,

>`*vVi>i`
ART OF R
U `i>V>}ivi>>]>}i>> PROGR A MMING
A TOUR O F S TAT I S T I C A L S O F T W A R E D E S I G N
U ->>}L}>`>Vi``iL}}}

7iii`i}}>V>v]viV>}i
NORMAN MATLOFF

v
>v>] >ii>ViiV`i

U
i>i>v}>>iVi`>>i
v>i`iiii>i>Viv

U 7iiivvViV`i}>>i,>`

->V*i

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 13 / 53


Statistics with R

Introductory Statistics with R Modern Applied Statistics


2nd Edition with S, 4th Edition
P. Dalgaard Venables and Ripley
Springer, 2008 Springer, 2002

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 14 / 53


Experience with other statistical computing languages

For those with experience in MATLAB, David Hiebeler has created a


MATLAB/R cross reference document:
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:
http://r4stats.com

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 15 / 53


Outline

1 R language overview and history

2 R language references

3 Short R Tutorial

4 The R help system

5 Web resources for R

6 IDE editors for R

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 16 / 53


Interacting with R

R is an interpreted language
An R interpreter must be running in order to evaluate R commands or
execute R scripts
RGui which includes an R Console window
RStudio which includes an R Console window


http://en.wikipedia.org/wiki/Interpreted_language
Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 17 / 53
R expression evaluation
R expressions are processed via Rs Read-eval-print loop :


http://en.wikipedia.org/wiki/Read-eval-print_loop
Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 18 / 53
Interacting with the RGui

The RGui is an interactive command


driven environment:

Type R commands (expressions)


into the R Console
Copy/Paste multiple R
commands into the R Console
Source an R script
An R script is simply a text
file of multiple R commands

Commands entered interactively into the R console

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 19 / 53


Interacting with RStudio

The RStudio is an Integrated


Development Environment (IDE) R:
Embedded R Console
RStudio runs an R interpreter
automatically

Program editor for R


Plot window
File browser
RStudio includes an embedded R Console
Integrated version control
R debugger

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 20 / 53


Calling functions

sin(pi/2)
R makes extensive use of functions
## [1] 1
Functions can be defined to take
print("Hello, world")
zero or more arguments
## [1] "Hello, world"
Functions typically return a value
a return value is not required abs(-8)

Functions are called by name with ## [1] 8


any arguments enclosed in
cos(2*sqrt(2))
parentheses
even if the function has no ## [1] -0.95136313
arguments the parentheses are
required date()

## [1] "Sun Aug 31 17:08:42 2014"



http://en.wikipedia.org/wiki/Functional_programming
Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 21 / 53
Assigning values to variables

y <- 5
y

Like other programming languages, ## [1] 5

values can be stored in variables assign("e",2.7183)


e

Variables are typically assigned


## [1] 2.7183
in 1 of 3 ways:
s = sqrt(2)
assignment operator: <- s

assignment function: assign


## [1] 1.4142136
equal sign: =
must be used to assign r <- rnorm(n=2)
r
arguments in a function call
## [1] -1.0067110533 -0.0020828847

s*e+y

## [1] 8.8442567

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 22 / 53


Object orientation in R

Everything in R is an Object

Use functions ls and objects to list all objects in the current


workspace

x <- c(3.1416,2.7183)
m <- matrix(rnorm(9),nrow=3)
tab <- data.frame(store=c("downtown","eastside","airport"),sales=c(32,17,24))
cities <- c("Seattle","Portland","San Francisco")
ls()

## [1] "cities" "e" "filename" "m" "r" "s"


## [7] "tab" "x" "y"


http://en.wikipedia.org/wiki/Object-oriented_programming
Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 23 / 53
Object classes
m
All R objects have a class
## [,1] [,2] [,3]
The class of an object determines ## [1,] 0.374352397 0.586864810 -0.73778598
what it can do and what you can ## [2,] -0.071532765 -0.262264339 -0.19904931
## [3,] 0.790144078 0.012603635 1.96472235
do with it
class(m)
Use function class to
## [1] "matrix"
display an objects class
tab
There are many R classes;
## store sales
basic classes are: ## 1 downtown 32
numeric ## 2 eastside 17
character ## 3 airport 24
data.frame
class(tab)
matrix
## [1] "data.frame"

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 24 / 53


Vectors
R is a vector/matrix programming language (also know as an array
programming language )
vectors can easily be created with c, the combine function
most places where single value can be supplied, a vector can be
supplied and R will perform a vectorized operation
my.vector <- c(2, 4, 3, 7, 10)
my.vector

## [1] 2 4 3 7 10

my.vector^2

## [1] 4 16 9 49 100

sqrt(my.vector)

## [1] 1.4142136 2.0000000 1.7320508 2.6457513 3.1622777



http://en.wikipedia.org/wiki/Array_programming
Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 25 / 53
Creating vectors with the c function

constants <- c(3.1416,2.7183,1.4142,1.6180)


constants

## [1] 3.1416 2.7183 1.4142 1.6180

my.labels <- c("pi","euler","sqrt2","golden")


my.labels

## [1] "pi" "euler" "sqrt2" "golden"

names(constants) <- my.labels


constants

## pi euler sqrt2 golden


## 3.1416 2.7183 1.4142 1.6180

The [1] in the above output is labeling the first element of the vector
The c function can be used to create character vectors, numeric
vectors, as well as other types of vectors
Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 26 / 53
Indexing vectors

constants[c(1,3,4)]

## pi sqrt2 golden
## 3.1416 1.4142 1.6180

Vectors indices are placed with constants[c(-1,-2)]


square brackets: []
## sqrt2 golden
## 1.4142 1.6180
Vectors can be indexed in any of the
following ways: constants[c("pi","golden")]

vector of positive integers ## pi golden


## 3.1416 1.6180
vector of negative integers
constants > 2
vector of named items
logical vector ##
##
pi
TRUE
euler
TRUE
sqrt2 golden
FALSE FALSE

constants[constants > 2]

## pi euler
## 3.1416 2.7183

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 27 / 53


Creating integer sequences with the a:b operator
The sequence operator will generate a vector of integers between a and b
Sequences of this type are particularly useful for indexing vectors, matrices,
data.frames etc.
1:5

## [1] 1 2 3 4 5

-(1:4)

## [1] -1 -2 -3 -4

letters[1:15]

## [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o"

letters[16:26]

## [1] "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"

letters[-(1:15)]

## [1] "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 28 / 53


Comparing vector and non-vector computing

# vectorized operation
# taking the log of each element in a vector
x <- c(97.87,96.18,95,86.39,88.18,90.8,86.06,82.27,83.32,85.3,83.25,82.13,78.54)
log(x)

## [1] 4.5836401 4.5662214 4.5538769 4.4588719 4.4793802 4.5086593 4.4550447


## [8] 4.4100065 4.4226886 4.4461745 4.4218481 4.4083034 4.3636080

# non-vectorized computation
# taking the log of each element in a vector
n <- length(x)
y <- rep(0,n)
for( i in 1:n )
y[i] <- log(x[i])
y

## [1] 4.5836401 4.5662214 4.5538769 4.4588719 4.4793802 4.5086593 4.4550447


## [8] 4.4100065 4.4226886 4.4461745 4.4218481 4.4083034 4.3636080

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 29 / 53


Comparing vector and non-vector computing
# vectorized operation
# taking the log of each element in a matrix
x <- matrix(c(2,9,4,7,5,3,6,1,8),nrow=3)
x^2

## [,1] [,2] [,3]


## [1,] 4 49 36
## [2,] 81 25 1
## [3,] 16 9 64

# non-vectorized computation
# taking the log of each element in a matrix
y <- x
for( i in 1:nrow(x) )
for( j in 1:ncol(x) )
y[i,j] <- x[i,j]^2
y

## [,1] [,2] [,3]


## [1,] 4 49 36
## [2,] 81 25 1
## [3,] 16 9 64

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 30 / 53


Outline

1 R language overview and history

2 R language references

3 Short R Tutorial

4 The R help system

5 Web resources for R

6 IDE editors for R

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 31 / 53


The HTML help system

R has a comprehensive Html help


facility
Run the help.start function
R GUI menu item
Help|Html help

help.start()

## If nothing happens, you should open


## 'http://127.0.0.1:28913/doc/html/index.html' yourself

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 32 / 53


The help function

Obtain help on a particular topic via


the help function
help(topic)
?topic

help(read.table)

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 33 / 53


The help.search function

Search help for a particular topic via


the help.search function
help.search(topic)
??topic

??predict

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 34 / 53


Help tab in RStudio

RStudio incorporates a dedicated help tab which facilitates accessing the R


Html help system

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 35 / 53


Outline

1 R language overview and history

2 R language references

3 Short R Tutorial

4 The R help system

5 Web resources for R

6 IDE editors for R

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 36 / 53


R Homepage

http://www.r-project.org

List of CRAN mirror sites


Manuals
FAQs
Site seach
Mailing lists
Links

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 37 / 53


CRAN - Comprehensive R Archive Network

http://cran.fhcrc.org

CRAN Mirrors
About 45 countries
About 100 sites worldwide
About 15 sites in US
R Binaries
R Packages
5800+ packages
R Sources
Task Views

use your closest CRAN mirror site


Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 38 / 53
CRAN Task Views

Organizes the 5800+ R packages by


application

Finance
Time Series
Econometrics
Optimization
Machine Learning

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 39 / 53


Stackoverflow

Stackoverflow has become the primary resource for help with R

http://stackoverflow.com/

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 40 / 53


R-SIG-FINANCE

Nerve center of the R finance


community

Daily must read

Exclusively for Finance-specific


questions, not general R
questions

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

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 41 / 53


Googles R Style Guide

Naming convention
Coding Syntax
Program Organization

http://google-styleguide.googlecode.com/svn/trunk/google-r-style.html

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 42 / 53


Quick R

http://www.statmethods.net

Introductory R Lessons
R Interface
Data Input
Data Management
Basic Statistics
Advanced Statistics
Basic Graphs
Advanced Graphs

Site maintained by Robert Kabacoff, author of R in Action


Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 43 / 53
R graphics details, colors, and other tech notes

Site of Earl Glynn of Stowers Institute for Medical Research

R Graphics and other useful information


R Color Chart
Using Color in R (great presentation)
Plot area, margins, multiple figures
Mixture models
Distance measures and clustering
Using Windows Explorer to Start R with Specified Working Directory
(under tech notes)

http://research.stowers-institute.org/efg/R/index.htm

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 44 / 53


Programming in R

Online R programming manual from UC Riverside:


R Basics
Finding Help
Code Editors for R
Control Structures
Functions
Object Oriented Programming
Building R Packages

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

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 45 / 53


Other useful R sites

R Bloggers Aggregation of about 550 R blogs


http://www.r-bloggers.com

R Site Search Search R function help, vignettes, R-help


http://finzi.psych.upenn.edu/search.html

R Seek R specific search site


http://www.rseek.org/

Revolution Blog Blog from David Smith of Revolution


http://blog.revolutionanalytics.com

Inside-R R community site by Revolution Analytics


http://www.inside-r.org

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 46 / 53


Outline

1 R language overview and history

2 R language references

3 Short R Tutorial

4 The R help system

5 Web resources for R

6 IDE editors for R

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 47 / 53


RStudio

RStudio is a fully-featured open-source IDE


for R

R language highlighting
Paste/Source to R console
object explorer
tabbed graphics window
integrated version control
1-click kintr/Sweave compilation

RStudio also provides a server-based version (R running in the cloud)

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 48 / 53


Revolution R Enterprize Visual Development Environment

Revolution Analytics is a company


that sells a commercial distribution
of R including a desktop IDE

Revolution R Enterprize is free to


academic users
R language highlighting
Paste/Source code to R
Source code debugger
object explorer
runs R in SDI mode

http://www.revolutionanalytics.com

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 49 / 53


WinEdt and R-Sweave

Based on WinEdt, an excellent


shareware editor with support for
LATEX and Sweave development

R language highlighting
Paste/Source code to R
1-click Sweave compilation
Supports R in MDI mode
Paste/Source code to S-PLUS

http://www.winedt.com
http://www.winedt.org/Config/modes/R-Sweave.php

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 50 / 53


StatET - An Eclipse Plug-In for R

StatET is a plug-in for the


open-source Eclipse development
environment

R language highlighting
Paste/Source code to R
Source code debugger
1-click Sweave compilation
Supports R in SDI mode
Excellent documentation by
Longhow Lam

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

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 51 / 53


Notepad++ and NpptoR

NpptoR is an automation widget


(based on AuotHotkey) which allows
the very useful program editor
Notepad++ to interact with R

R language highlighting
Paste/Source code to R
Supports R in SDI mode

http://notepad-plus-plus.org
http://sourceforge.net/projects/npptor

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 52 / 53


Computational Finance and Risk Management

http://depts.washington.edu/compfin

Guy Yollin (Copyright 2014) R Programming for Quantitative Finance R Basics 53 / 53