Manipulating objects Vector - Laboratory for Remote Sensing

An Introduction to R
Prof. Ke-Sheng Cheng
Dept. of Bioenvironmental Systems Engineering
National Taiwan University
References:
1. Venables, W.N., Smith, D.M. and the R Core Team. An Introduction to R.
2. Zuur, Ieno and Meesters, 2009. A Beginner’s Guide to R.
3. Norman Matloff, 2011. The Art of R Programming.
The R-project
• R is a free software. (www.r-project.org)
• The S language.
– S-Plus (a commercial software)
• R is an integrated software environment for data
manipulation, calculation and graphical display.
– An efficient data handling and storage facility,
– A suite of operators for calculations on arrays, in particular
matrices,
– A large, coherent, integrated collection of intermediate
tools for data analysis,
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
2
– Graphical facilities for data analysis and display either
directly at the computer or on hardcopy,
– A well developed, simple and effective programming
language which includes conditionals, loops, user defined
recursive functions and input and output facilities.
• R packages (CRAN)
– Standard packages
– Other packages available at the Comprehensive R Archive
Network (CRAN)
• R community –
– Local R users groups
– R-bloggers (Useful and interesting examples and
discussions)
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
3
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
4
Downloading and Installing R
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
5
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
6
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
7
Starting an R session
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
8
• In addition to R, there are also
– RStudio
– Shiny (http://shiny.rstudio.com/tutorial/)
• We will stick to R in this class.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
9
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
10
Working Environment of R
• The working environment of R can be
illustrated by the following graph:
Directory 1 Directory 2
Working
Directory
Workspace
Temporary
memory
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
11
Running R
• When you first start running R the default
prompt is the “>” sign.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
12
• Working directory
– In using R, you need to know and
specify the working
directory.This is done by clicking
the Change dir button.
– One can specify different
working directories for different
projects.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
13
• Getting help
– >help(…) and >help.search(“….”)
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
14
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
15
Executing commands from an external file
• R commands can be stored in an external file
(for example, ksc.r) in the working directory.
These commands can then be executed with
the source command:
> source (“ksc.r”)
7/31/2017
or
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
16
Open and run an existing file
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
17
Objects and Workspace
• The entities that R creates and manipulates are
known as objects. These may be variables, arrays of
numbers, character strings, functions, or more
general structures built from such components.
• During an R session, objects are created and stored
by name. The R command
> objects() (alternatively, ls())
can be used to display the names of (most of) the
objects which are currently stored within R.
• The collection of objects currently stored is called
the workspace.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
18
Data permanency and removing objects
• To remove objects the function rm is available:
> rm(x, y, z, ink, junk, temp, foo, bar)
• All objects created during an R sessions can be
stored permanently in a file for use in future R
sessions. At the end of each R session you are given
the opportunity to save all the currently available
objects. If you indicate that you want to do this, the
objects are written to a file called ‘.RData’ in the
current directory, and the command lines used in the
session are saved to a file called ‘.Rhistory’.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
19
• When R is started at later time from the same
directory it reloads the workspace from this
file (.RData). At the same time the associated
commands history is reloaded.
• Remove all objects in the workspace
– rm(list=ls())
• Clear the screen
– Ctrl l
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
20
Reading data from files
• The read.table() function
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
21
• The scan() function
• The read.csv() function
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
22
Output data to files
• write, write.table, write.csv
write(x,”output.txt”,ncolumns=10,append=TRUE,sep="\t")
write(round(x,digits=2),”output.txt”,ncolumns=10,append=TRUE,sep="\t")
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
23
Redirecting outputs
• Sink
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
24
Objects, their modes and attributes
• Intrinsic attributes: mode and length
– The entities R operates on are technically known as
objects. Examples are vectors of numeric (real) or
complex values, vectors of logical values and vectors
of character strings.
– These vectors are known as “atomic” structures
since their components are all of the same type, or
mode, namely numeric, complex, logical, character
and raw.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
25
Atomic structures of R
– Vectors must have their values all of the same
mode. Thus any given vector must be
unambiguously either logical, numeric, complex,
character or raw. (The only apparent exception to
this rule is the special “value” listed as NA for
quantities not available, but in fact there are
several types of NA).
– Note that a vector can be empty and still have a
mode. For example the empty character string
vector is listed as character(0) and the empty
numeric vector as numeric(0).
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
26
Recursive structures of R
• R also operates on objects called lists, which
are of mode list. These are ordered sequences
of objects which individually can be of any
mode.
• lists are known as “recursive” rather than
atomic structures since their components can
themselves be lists in their own right.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
27
• The other recursive structures are those of
mode function and expression.
• Functions are the objects that form part of the
R system along with similar user written
functions.
• Expressions are objects which form an
advanced part of R.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
28
An example of using function
# AR2_Bootstrap.R
# Coded by KSC 08232011 at the University of Bristol ------------# AR modeling of the flow data series
x=read.csv("Nine_flow_events.csv",sep=",")
n.event=9
n.bt=1000 # number of bootstrap samples
alpha1=c();alpha2=c();alpha3=c();alpha0=c()
predct=c()
par.ar=matrix(rep(0,n.event*4),ncol=4,nrow=n.event)
file.name=paste("event",1:n.event,".txt",sep="")
bt.name=paste("bootstrap",1:n.event,".txt",sep="")
#-----------------------------------------------------------------#
Function -- AR(2) Forecasting
forecast=function(obs,par1,par2,par3,predct)
{
L=length(obs)
u1=0;u2=0
obs=c(u1,u2,obs)
for (i in 1:L) predct[i]=par3+par1*obs[i+1]+par2*obs[i]
err=obs[3:(L+2)]-predct
out=c(predct,err)
return(out)
}
#-----------------------------------------------------------------7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
29
#
AR(2) Modeling, forecasting and bootstrapping of individual series
for (i in 1:n.event)
{
event=x[[i]][!is.na(x[i])]
#
AR(2) Modeling -----------windows()
pacf(event)
ar.event=arima(event,order=c(2,0,0))
alpha1[i]=ar.event[[1]][1]
alpha2[i]=ar.event[[1]][2]
alpha3[i]=ar.event[[1]][3]
alpha0[i]=(1-alpha1[i]-alpha2[i])*alpha3[i]
par.ar[i,]=c(alpha0[i],alpha1[i],alpha2[i],alpha3[i])
#
#
AR(2) Forecasting --------out.4cast=forecast(event,alpha1[i],alpha2[i],alpha0[i],predct)
err=out.4cast[(length(event)+1):(2*length(event))]
err.star=err-mean(err)
write(event,file.name[i],ncolumns=10,append=TRUE,sep="\t")
write(out.4cast[1:length(event)],file.name[i],ncolumns=10,append=TRUE,sep="\t")
write(err,file.name[i],ncolumns=10,append=TRUE,sep="\t")
#
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
30
#
#
#
}
par.ar
7/31/2017
Model-based Time Series Bootstrapping -------------btsample=matrix(rep(0,n.bt*(2+length(err))),nrow=n.bt,ncol=2+length(err))
for (j in 1:n.bt)
{
epsilon=sample(err.star,size=length(err),replace=TRUE)
for (k in 3:(2+length(err)))
{
btsample[j,k]=alpha0[i]+alpha1[i]*btsample[j,k-1]+alpha2[i]*btsample[j,k-2]+epsilon[k-2]
}
write(btsample[j,3:(2+length(err))],bt.name[i],ncolumns=10,append=TRUE,sep="\t")
}
Plot observed and bootstrap sample series
windows()
z=scan(bt.name[i],sep="\t")
plot(0,0,type="n",xlim=c(0,length(event)),ylim=c(min(z),max(z)))
dim(z)=c(length(event),n.bt)
for (j in 1:n.bt) lines(1:length(event),z[,j],type="l")
lines(1:length(event),event,type="l",col="red",lwd=3)
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
31
An example using function ecdf
# ECDF_Plot.R
# Coded by KSC 09242011 ----------------n.sample=9
# Number of samples
in.file=paste("CECP",1:n.sample,".txt",sep="")
windows()
plot(0,0,type="n",xlim=c(-1,1),ylim=c(0,1))
for (i in 1:n.sample)
{
x=scan(in.file[i],sep="\t")
n.L=length(x)
x1=x[1:(n.L/2)]
x2=x[(1+(n.L/2)):n.L]
x1.ecdf=ecdf(x1);x2.ecdf=ecdf(x2)
u=seq(-1,1,by=0.005);v=x1.ecdf(u)
lines(u,v,type="l",col=i,lwd=3)
v1=round(mean(x1),digits=4)
v2=round(sqrt(var(x1)),digits=4)
v3=round(mean(x2),digits=4)
v4=round(sqrt(var(x2)),digits=4)
print(c(v1,v2,v3,v4))
}
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
32
Combination and Permutation
perm = function(n, x) {
return(factorial(n) / factorial(n-x))
}
comb = function(n, x) {
return(factorial(n) / (factorial(x) * factorial(n-x)))
}
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
33
• The functions mode(object) and length(object)
can be used to find out the mode and length
of any defined structure.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
34
Changing the mode of an object
• as.character(x)
• as.integer(x)
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
35
Changing the length of an object
• An “empty” object may still have a mode. For
example
makes e an empty vector structure of mode numeric.
• Once an object of any size has been created, new
components may be added to it simply by giving it an
index value outside its previous range.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
36
• Other examples
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
37
The class of an object
• All objects in R have a class, reported by the
function class. For simple vectors this is just
the mode, for example "numeric", "logical",
"character" or "list", but "matrix", "array",
"factor" and "data.frame" are other possible
values.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
38
What is an object?
• Any entity R
• Class of an
operates on is
object
an object.
– Numeric
– Vector
• Matrix
• Array
– List
• Data.frame
– Function
– Expression
–
–
–
–
–
–
–
–
Complex
Character
Logical
list
Factor
Array
Matrix
Data.frame
• Mode of an
object
–
–
–
–
–
Numeric
Complex
Character
Logical
list
Manipulating objects
• Vector assignment
concatenate
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
40
• If an expression is used as a complete
command, the value is printed and lost.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
41
Vector arithmetic
• Vectors can be used in arithmetic expressions, in
which case the operations are performed element by
element.
• Vectors occurring in the same expression need not
all be of the same length. If they are not, the value of
the expression is a vector with the same length as
the longest vector which occurs in the expression.
Shorter vectors in the expression are recycled as
often as need be (perhaps fractionally) until they
match the length of the longest vector. In particular a
constant is simply repeated.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
42
• Example
• Arithmetic operations
+, -, * , / , ^ (power), round, floor, ceiling
• Arithmetic functions
– log, exp, sin, cos, tan, sqrt, abs
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
43
• Statistical functions
– min, max, range, length, sum, mean, median
– quantile, var, prod, smmary
– sort, order, rank
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
44
• Sort y with respect to increasing order of x.
Same as sort(x)
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
45
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
46
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
47
Logical vectors
• As well as numerical vectors, R allows manipulation
of logical quantities. The elements of a logical vector
can have the values TRUE, FALSE, and NA (for “not
available”).
• Logical vectors are generated by conditions.
• The logical operators are <, <=, >, >=, == for exact
equality and != for inequality. In addition if c1 and c2
are logical expressions, then c1 & c2 is their
intersection (“and”), c1 | c2 is their union (“or”),
and !c1 is the negation of c1.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
48
• Example
Why?
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
49
Missing values
• NA – not available
• NaN – not a number
• The function is.na(x) gives a logical vector of
the same size as x with value TRUE if and only
if the corresponding element in x is NA or NaN.
• The finction is.nan(x) returns TRUE if and only
if the corresponding element is NaN.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
50
• Removing the missing values
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
51
Character vectors
• Character vectors are used frequently in R, for
example as plot labels. Where needed they are
denoted by a sequence of characters delimited by
the double quote character, e.g., "x-values", "New
iteration results".
• The paste() function takes an arbitrary number of
arguments and concatenates them one by one into
character strings. Any numbers given among the
arguments are coerced into character strings in the
evident way, that is, in the same way they would be
if they were printed.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
52
• The arguments are by default separated in the
result by a single blank character, but this can
be changed by the named parameter,
sep=string, which changes it to string, possibly
empty.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
53
Set operations
•
•
•
•
union(x, y)
intersect(x, y)
setdiff(x, y)
is.element(el, set)
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
54
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
55
Selecting and modifying subsets of an
object using index vectors
• Subsets of a vector may be selected by
appending to the name of the vector an index
vector in square brackets, v[i].
• Such index vectors can be any of four distinct
types:
– A logical vector
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
56
– A vector of positive integer quantities
– A vector of negative integer quantities
Such an index vector specifies the values to be excluded
rather than included.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
57
– A vector of character strings. This possibility only
applies where an object has a names attribute to
identify its components.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
58
• An indexed expression can also appear on the
receiving end of an assignment, in which case
the assignment operation is performed only
on those elements of the vector.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
59
Arrays and Matrices
• An array can be considered as a multiply
subscripted collection of data entries.
• A dimension vector is a vector of nonnegative integers. If its length is k then the
array is k-dimensional, e.g. a matrix is a 2dimensional array.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
60
• A vector can be used by R as an array only if it
has a dimension vector as its dim attribute.
Suppose, for example, z is a vector of 1500
elements. The assignment
> dim(z) = c(3,5,100)
gives it the dim attribute that allows it to be
treated as a 3 by 5 by 100 array.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
61
• Matrices and arrays are actually vectors, too.
They merely have extra class attributes.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
62
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
63
• Creating a matrix
– Using dim
– Using matrix
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
64
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
65
• The values in the data vector give the values in
the array in the same order as they would occur
in FORTRAN, that is “column major order,” with
the first subscript moving fastest and the last
subscript slowest.
• For example if the dimension vector for an array,
say a, is c(3,4,2) then there are 24 entries in a
and the data vector holds them in the order
a[1,1,1], a[2,1,1], ..., a[2,4,2], a[3,4,2].
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
66
X[2,3,2] = ?
X[18] = ?
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
67
Array indexing
Subsections of an array
• Individual elements of an array may be
referenced by giving the name of the array
followed by the subscripts in square brackets,
separated by commas.
• More generally, subsections of an array may
be specified by giving a sequence of index
vectors in place of subscripts; however if any
index position is given an empty index vector,
then the full range of that subscript is taken.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
68
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
69
Index matrices
• A matrix may be used with a single index matrix
in order either to assign a vector of quantities
to an irregular collection of elements in the
array, or to extract an irregular collection as a
vector.
• Example
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
70
An index matrix
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
71
List
• An R list is an object consisting of an ordered
collection of objects known as its components.
• There is no particular need for the components
to be of the same mode or type, and, for example,
a list could consist of a numeric vector, a logical
value, a matrix, a complex vector, a character
array, a function, and so on.
• If Lst is a list, then the function length(Lst) gives
the number of (top level) components it has.
• New lists may be formed from existing objects by the
function list().
> Lst <- list(name_1=object_1, ..., name_m=object_m)
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
72
• Example of a list object
They are different.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
73
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
74
x=read.csv("20110823_Flow_Series.csv",sep=",")
n.event=3
event.comb=c()
for (i in 1:n.event) event.comb=c(event.comb,x[[i]][!is.na(x[i])]) # combining all events into one series.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
75
• Although the internal storage of a matrix is in
column-major order, you can set the “byrow”
argument in matrix() to TRUE to indicate that
the data is coming in row-major order.
• An EXCEL csv file (number.csv) is as follows:
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
76
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
77
Comparing scan and read.csv
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
78
Note that mode of z is “list”.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
79
Control statements
• Conditional execution: if statements
– > if (expr_1) expr_2 else expr_3
• Repetitive execution: for loops, repeat and
while
– for loop construction
• > for (name in expr_1) expr_2
– Other looping facilities
• > repeat expr
• > while (condition) expr
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
80
• The break statement can be used to terminate
any loop, possibly abnormally. This is the only
way to terminate repeat loops.
• The next statement can be used to
discontinue one particular cycle and skip to
the “next”.
• Note that the if statement is NOT a loop
operation, but the while statement yield a
loop operation.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
81
if
• If statements operate on length-one logical
vectors.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
82
ifelse
• Ifelse statements operate on vectors of
variable length.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
83
Loops
• The most commonly used loop structures in R
are for, while and apply loops. Less common
are repeat loops.
• The break function is used to break out of
loops, and next halts the processing of the
current iteration and advances the looping
index.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
84
for
• For loops are controlled by a looping vector. In
every iteration of the loop one value in the
looping vector is assigned to a variable that
can be used in the statements of the body of
the loop. Usually, the number of loop
iterations is defined by the number of values
stored in the looping vector and they are
processed in the same order as they are
stored in the looping vector.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
85
http://manuals.bioinformatics.ucr.edu/home/programming-in-r#TOC-While-Loop
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
86
while
• Similar to for loop, but the iterations are
controlled by a conditional statement.
• Syntax
– while(condition) statements
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
87
Try the following commands:
> qi=0;Q=10
> if(Q>6) qi=1 else qi=0
> qi=0;Q=10
> while(Q>6) qi=1
For while loops, a break or a
change in the state of the
condition is needed to exit the loop.
> qi=0;Q=10
> while(Q>6) {qi=1;break}
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
88
repeat
• Syntax
repeat statements
• Loop is repeated until a break is specified. This
means there needs to be a second statement
to test whether or not to break from the loop.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
89
apply Loop Family
• For Two-Dimensional Data Sets: apply
• For Ragged Arrays: tapply
• For Vectors and Lists: lapply and sapply
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
90
apply
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
91
More examples of apply
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
92
tapply
• Applies a function to array categories of
variable lengths (ragged array). Grouping is
defined by factor.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
93
lapply and sapply
• Both apply a function to vector or list objects.
The function lapply returns a list, while sapply
attempts to return the simplest data object,
such as vector or matrix instead of list.
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
94
Rounding errors
7/31/2017
Laboratory for Remote Sensing Hydrology and Spatial Modeling,
Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.
95