Presentation is loading. Please wait.

Presentation is loading. Please wait.

An Introduction to R Prof. Ke-Sheng Cheng Dept. of Bioenvironmental Systems Engineering National Taiwan University References: 1. Venables, W.N., Smith,

Similar presentations


Presentation on theme: "An Introduction to R Prof. Ke-Sheng Cheng Dept. of Bioenvironmental Systems Engineering National Taiwan University References: 1. Venables, W.N., Smith,"— Presentation transcript:

1 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.

2 The R-project R is a free software. (www.r-project.org)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, 12/14/2015 2 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

3 – 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) 12/14/2015 3 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

4 Downloading and Installing R http://www.r-project.org/ 12/14/2015 4 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

5 12/14/2015 5 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

6 Starting an R session 12/14/2015 6 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

7 In addition to R, there are also – RStudio – R Commander We will stick to R in this class. 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 7

8 12/14/2015 8 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

9 Working Environment of R The working environment of R can be illustrated by the following graph: Directory 1Directory 2 Workspace Temporary memory Working Directory 12/14/2015 9 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

10 Running R When you first start running R the default prompt is the “>” sign. 12/14/2015 10 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

11 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. 12/14/2015 11 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

12 Getting help – >help(…) and >help.search(“….”) 12/14/2015 12 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

13 12/14/2015 13 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

14 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”) or 12/14/2015 14 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

15 Open and run an existing file 12/14/2015 15 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

16 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. 12/14/2015 16 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

17 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’. 12/14/2015 17 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

18 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 12/14/2015 18 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

19 Reading data from files The read.table() function 12/14/2015 19 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

20 The scan() function The read.csv() function 12/14/2015 20 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

21 Output data to files write, write.table, write.csv 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 21 write(x,”output.txt”,ncolumns=10,append=TRUE,sep="\t") write(round(x,digits=2),”output.txt”,ncolumns=10,append=TRUE,sep="\t")

22 Redirecting outputs Sink 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 22

23 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. 12/14/2015 23 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

24 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). 12/14/2015 24 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

25 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. 12/14/2015 25 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

26 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. 12/14/2015 26 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

27 An example of using function 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 27 # 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) } #------------------------------------------------------------------

28 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 28 #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") #

29 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 29 #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) } par.ar

30 An example using function ecdf 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 30 # 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)) }

31 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))) } 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 31

32 The functions mode(object) and length(object) can be used to find out the mode and length of any defined structure. 12/14/2015 32 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

33 Changing the mode of an object as.character(x) as.integer(x) 12/14/2015 33 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

34 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. 12/14/2015 34 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

35 Other examples 12/14/2015 35 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

36 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. 12/14/2015 36 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

37 What is an object? Any entity R operates on is an object. – Vector Matrix Array – List Data.frame – Function – Expression Class of an object – Numeric – Complex – Character – Logical – list – Factor – Array – Matrix – Data.frame Mode of an object – Numeric – Complex – Character – Logical – list

38 Manipulating objects Vector assignment concatenate 12/14/2015 38 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

39 If an expression is used as a complete command, the value is printed and lost. 12/14/2015 39 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

40 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 40

41 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 41

42 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. 12/14/2015 42 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

43 Example Arithmetic operations +, -, *, /, ^ (power), round, floor, ceiling Arithmetic functions – log, exp, sin, cos, tan, sqrt, abs 12/14/2015 43 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

44 Statistical functions – min, max, range, length, sum, mean, median – quantile, var, prod, smmary – sort, order, rank 12/14/2015 44 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

45 Sort y with respect to increasing order of x. Same as sort(x) 12/14/2015 45 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

46 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. 12/14/2015 46 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

47 Example Why? 12/14/2015 47 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

48 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 and NaN. The finction is.nan(x) returns TRUE if and only if the corresponding element is NaN. 12/14/2015 48 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

49 Removing the missing values 12/14/2015 49 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

50 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. 12/14/2015 50 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

51 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. 12/14/2015 51 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

52 Set operations union(x, y) intersect(x, y) setdiff(x, y) is.element(el, set) 12/14/2015 52 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

53 12/14/2015 53 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

54 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 12/14/2015 54 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

55 – 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. 12/14/2015 55 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

56 – A vector of character strings. This possibility only applies where an object has a names attribute to identify its components. 12/14/2015 56 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

57 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. 12/14/2015 57 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

58 Arrays and Matrices An array can be considered as a multiply subscripted collection of data entries. A dimension vector is a vector of non- negative integers. If its length is k then the array is k-dimensional, e.g. a matrix is a 2- dimensional array. 12/14/2015 58 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

59 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. 12/14/2015 59 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

60 Matrices and arrays are actually vectors, too. They merely have extra class attributes. 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 60

61 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 61

62 Creating a matrix – Using dim – Using matrix 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 62

63 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 63

64 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]. 12/14/2015 64 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

65 12/14/2015 65 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. X[2,3,2] = ? X[18] = ?

66 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. 12/14/2015 66 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

67 12/14/2015 67 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

68 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 12/14/2015 68 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ.

69 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 69 An index matrix

70 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(). 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 70 > Lst <- list(name_1=object_1,..., name_m=object_m)

71 Example of a list object 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 71 They are different.

72 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 72

73 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 73 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.

74 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: 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 74

75 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 75

76 Comparing scan and read.csv 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 76

77 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 77 Note that mode of z is “list”.

78 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 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 78

79 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. 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 79

80 if If statements operate on length-one logical vectors. 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 80

81 ifelse Ifelse statements operate on vectors of variable length. 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 81

82 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. 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 82

83 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. 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 83

84 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 84 http://manuals.bioinformatics.ucr.edu/home/programming-in-r#TOC-While-Loop

85 while Similar to for loop, but the iterations are controlled by a conditional statement. Syntax – while(condition) statements 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 85

86 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 > qi=0;Q=10 > while(Q>6) {qi=1;break} 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 86 For while loops, a break or a change in the state of the condition is needed to exit the loop.

87 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. 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 87

88 apply Loop Family For Two-Dimensional Data Sets: apply For Ragged Arrays: tapply For Vectors and Lists: lapply and sapply 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 88

89 apply 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 89

90 More examples of apply 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 90

91 tapply Applies a function to array categories of variable lengths (ragged array). Grouping is defined by factor. 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 91

92 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. 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 92

93 Rounding errors 12/14/2015 Laboratory for Remote Sensing Hydrology and Spatial Modeling, Dept of Bioenvironmental Systems Engineering, National Taiwan Univ. 93


Download ppt "An Introduction to R Prof. Ke-Sheng Cheng Dept. of Bioenvironmental Systems Engineering National Taiwan University References: 1. Venables, W.N., Smith,"

Similar presentations


Ads by Google