an introduction to r: logic & basics. the r language command line can be executed within a...
TRANSCRIPT
An Introduction An Introduction
toto R:R:
Logic & BasicsLogic & 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 structures settle 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
i
j
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.typetype
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