Première session R

Création d’un vecteur simple

x <- c(1,2,3,4)
x
## [1] 1 2 3 4

Commentaire :

On crée un vecteur contenant les valeurs 1, 2, 3 et 4.

Formule :

\[ x = (1,2,3,4) \]

Concaténation de vecteurs

q <- c(x,x,8)
q
## [1] 1 2 3 4 1 2 3 4 8

Le vecteur q contient maintenant deux fois x puis 8.

Sous-vecteur

x <- c(1,2,3,4)
x[2:3]
## [1] 2 3

Formule :

\[ x[2:3] = (2,3) \]

Calcul de la moyenne et de l’écart-type

mean(x)
## [1] 2.5
sd(x)
## [1] 1.290994

Formules mathématiques :

\[ \bar{x} = \frac{1}{n}\sum_{i=1}^{n}x_i \]

\[ s = \sqrt{\frac{1}{n-1}\sum_{i=1}^{n}(x_i-\bar{x})^2} \]

Utilisation du jeu de données Nile

mean(Nile)
## [1] 919.35
sd(Nile)
## [1] 169.2275
hist(Nile)

Commentaire :

On calcule la moyenne, l’écart-type et on trace l’histogramme des données du Nil.

Vecteurs : ajout et suppression

x <- c(1,2,12,89)
x <- c(x[1:3],400,x[4])
x
## [1]   1   2  12 400  89

Commentaire :

On a inséré la valeur 400 au milieu du vecteur.

Longueur d’un vecteur

x <- c(1,2,3)
length(x)
## [1] 3

Formule :

\[ \text{length}(x) = 3 \]

Règle du recycling

c(1,2,3) + c(8,10,9,20,2)
## Warning in c(1, 2, 3) + c(8, 10, 9, 20, 2): la taille d'un objet plus long
## n'est pas multiple de la taille d'un objet plus court
## [1]  9 12 12 21  4

Commentaire :

R répète automatiquement le plus petit vecteur pour faire l’opération.

Opérations arithmétiques

x <- c(1,2,3)
y <- c(4,5,6)

x * y
## [1]  4 10 18
x / y
## [1] 0.25 0.40 0.50

Formules :

\[ (x*y)_i = x_i \times y_i \]

\[ (x/y)_i = \frac{x_i}{y_i} \]

Indexation

y <- c(1,10,5,8,9,4,0,2,1)
y[c(1,3)]
## [1] 1 5
y[2:3]
## [1] 10  5

Indexation négative

z <- c(8,10,11,9)
z[-1]
## [1] 10 11  9
z[-1:-2]
## [1] 11  9

Fonctions logiques

x <- 1:10
any(x > 7)
## [1] TRUE
all(x > 0)
## [1] TRUE

Formules logiques :

\[ any(x>7) = \exists i, x_i>7 \]

\[ all(x>0) = \forall i, x_i>0 \]

Gestion des NA

x <- c(88,NA,12,168,13)
mean(x, na.rm=TRUE)
## [1] 70.25

Formule :

\[ \bar{x} = \frac{1}{n'} \sum_{x_i \neq NA} x_i \]

Matrices

A <- matrix(c(-3,2,83,0.1),nrow=2,ncol=2)
A
##      [,1] [,2]
## [1,]   -3 83.0
## [2,]    2  0.1

Représentation :

\[ A = \begin{pmatrix} -3 & 83 \\ 2 & 0.1 \end{pmatrix} \]

Opérations matricielles

B <- matrix(c(3,4,1,2),nrow=2)
solve(B)
##      [,1] [,2]
## [1,]    1 -0.5
## [2,]   -2  1.5
B %*% solve(B)
##      [,1] [,2]
## [1,]    1    0
## [2,]    0    1

Formules :

\[ B^{-1} \]

\[ B \times B^{-1} = I \]

Listes

foo <- list(matrix(data=1:4,nrow=2,ncol=2),c(T,F,T,T),"hello")
foo
## [[1]]
##      [,1] [,2]
## [1,]    1    3
## [2,]    2    4
## 
## [[2]]
## [1]  TRUE FALSE  TRUE  TRUE
## 
## [[3]]
## [1] "hello"
foo[[1]]
##      [,1] [,2]
## [1,]    1    3
## [2,]    2    4

Data Frames

mydata <- data.frame(
  person=c("Peter","Lois","Meg","Chris","Stewie"),
  age=c(42,40,17,14,1),
  sex=factor(c("M","F","F","M","M"))
)
mydata

Ajout d’une colonne

mydata$age.mon <- mydata$age*12
mydata

Formule :

\[ age\_mon = age \times 12 \]

Boucles

for(i in 5:7){
  print(i)
}
## [1] 5
## [1] 6
## [1] 7

Fonctions

myfib <- function(){
  fib.a <- 1
  fib.b <- 1
  cat(fib.a,",",fib.b,",",sep="")
  repeat{
    temp <- fib.a + fib.b
    fib.a <- fib.b
    fib.b <- temp
    cat(fib.b,",",sep="")
    if(fib.b > 150){
      cat("BREAKNOW...")
      break
    }
  }
}

myfib()
## 1,1,2,3,5,8,13,21,34,55,89,144,233,BREAKNOW...

Graphiques

x <- c(1.1,2,3.5,3.9,4.2)
y <- c(2,2.2,-1.3,0,0.2)
plot(x,y)

Statistiques descriptives

xdata <- c(2,4.4,3,3,2,2.2,2,4)
mean(xdata)
## [1] 2.825
median(xdata)
## [1] 2.6
summary(xdata)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   2.000   2.000   2.600   2.825   3.250   4.400

Histogrammes

hist(mtcars$hp)

Boîtes à moustaches

boxplot(quakes$mag)

Nuages de points

plot(quakes$long, quakes$lat)

Loi binomiale

dbinom(5, size=8, prob=1/6)
## [1] 0.004167619
pbinom(3, size=8, prob=1/6)
## [1] 0.9693436
qbinom(0.95, size=8, prob=1/6)
## [1] 3

Formule :

\[ P(X=k)=\binom{n}{k}p^k(1-p)^{n-k} \]

Loi de Poisson

dpois(3, lambda=3.22)
## [1] 0.2223249

Formule :

\[ P(X=k)=\frac{e^{-\lambda}\lambda^k}{k!} \]

Loi uniforme

dunif(x=c(-2,-0.33,0,0.5,1.05,1.2),min=-0.4,max=1.1)
## [1] 0.0000000 0.6666667 0.6666667 0.6666667 0.6666667 0.0000000