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