140 likes | 333 Views
An Introduction to R:. Logic & Basics. The R language. Command line Can be executed within a terminal Within Emacs using ESS (Emacs Speaks Statistics). Data structures. Vector (~ 1 dimensional array) > vect = c(4,6,7,10) > vect2 = c(vect,vect) Matrix (~ 2 dimensional array)
E N D
An Introduction toR: Logic & Basics
The R language Command line • Can be executed within a terminal • Within Emacs using ESS (Emacs Speaks Statistics)
Data structures • Vector (~ 1 dimensional array) > vect = c(4,6,7,10) > vect2 = c(vect,vect) • Matrix (~ 2 dimensional array) > mat = matrix(0, 2, 2) # matrix of size 2x2, with 0 > mat = matrix(vect, 2, 2) # matrix of size 2x2 • Array (~ n dimensional) > array = array(0, dim=c(10,10,10)) # cube of 10x10x10 These data structuressettle the R logic as all is designed to make an easy use of it
A few tricks on Vectors • The indices can be a vector ! Indices begin at 1!!! > vect.A = c(4,6,7,10) > vect.B = c(1,4) > vect.A[1] 4 > vect.A[vect.B] # equivalent to vect.A[c(1,4)] 4 10 • The WHICH() function is the most useful > which(vect.A == 7)3 > which(vect.A > 6) 3 4 • The ‘:’ , ‘seq’ and ‘gl’ functions allow to generate sequence of numbers
A few tricks on Matrices (1) • The indices can still be given as a vector ! > MY.matrix[i,j] # give the element at line i, col j > MY.matrix[i,] # gives the line i > MY.matrix[c(1,2,3),]# gives the first 3 lines as a matrix > MY.matrix[c(1,2,3), c(1,2,3)] # gives a sub-matrix j i i
A few tricks on Matrices (2) • The WHICH() function is still very useful # Prints extreme values of a matrix > MY.matrix[which(MY.matrix > cutoff)]here Values > to cutoff are printed • An example: I have a file of the following type: pdb NB_chains NB_identical_int NB_homologous_int NB_different_int > data = read.table(file = ‘~/elevy/... ’) > identical.1 = which(data[,3] == 1) > dimers = which(data[,2] == 2) > homodimers = intersect(identical,dimers) > data[homodimers,] # prints all the homodimer lines !
More tricks • How many numbers in a matrix are equal to 5 ? • How many numbers are in common between 2 matrices ? • Replace all the 4 by -4 in any data structure ?
Some useful functions (1) Play with data structures • min, max, which.min, which.max • == combined with sum • mean, sd • intersect • cor combined with hclust / heatmap • Cast operator : as.type
Some useful functions (2) For text printing • print(‘Hello’) • print(paste(‘one’, i , ’two’ , j ,sep=‘ ‘))
Some useful functions (3) For statistical analysis • rand / random doesn’t exists ! Their are specific laws instead runif(x) Uniform law (equiv. To rand) rnorm(x) Gaussian law
Some useful functions (4) Useful graphical functions • Plot 2D look at demo(graphics) • Image 2D look at demo(image) • Heatmap (clust + image & tree) par() store most of the graphical parameters to custom the display • Persp 3D look at demo(persp) Find help & examples: help.start() or help(function) or ?function
Some remarks • No « underscores » in variables names are allowed (the dot is generally used instead) • The « dot » doesn’t mean « method call » like in object oriented languages! • There is actually another « vector like » data structure : list which allows to store objects rather than digits. • There is actually another « matrix like » data structure : data.frame which is a matrix for which rows/columns can be given a name
Last remarks • You can run scripts in BATCH mode, example: $ R --vanilla < script.r • To quit R, type q() The () are very important, when you don’t put it the source code of the function is printed! (this is true for any function) • Don’t hesitate to ask questions