254
Le logiciel R - Maˆ ıtriser le langage
ci-dessous g´ en` ere toutes les combinaisons de taille 3 ` a partir des ´ el´ ements du
vecteur 1:5.
> combn(5,3)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]
1
1
1
1
1
1
2
2
2
3
[2,]
2
2
2
3
3
4
3
3
4
4
[3,]
3
4
5
4
5
5
4
5
5
5
Lorsque l’on cherche ` a obtenir les choose(n,m) combinaisons (soit 1 313 400
par exemple si n = 200 et m = 3) ` a partir d’un vecteur de plus grande taille n,
le temps de calcul peut devenir plus important.
> system.time(x <- combn(200,3))
user system elapsed
2.013
0.040
2.054
On constate, en utilisant la fonction system.time(), que le calcul ci-dessus
prend plusieurs secondes sur l’ordinateur utilis´ e lors de l’´ ecriture de ce livre
(prenez une valeur sup´ erieure ` a 200 au besoin, si votre ordinateur est plus rapide).
Astuce
La fonction permn() du package combinat peut ˆ etre utilis´ ee pour g´ en´ erer toutes les permutations des ´ elements d’un vecteur.
Une version simplifi´ ee de la fonction originale combn() de R est donn´ ee
ci-dessous :
> combnR <- function(n,m) {
+ a <- 1:m ; e <- 0 ; h <- m
+ combmat <- matrix(0,nrow=m,ncol=choose(n,m))
+ combmat[,1] <- 1:m
+ i <- 2
+ nmmp1 <- n - m + 1
+ mp1 <- m + 1
+ while (a[1] != nmmp1) {
+
if (e
+
h <- 1 ; e <- a[m] ; a[m-h+1] <- e + 1
+
combmat[,i] <- a
+
i <- i + 1
+ } else {
+
h <- h + 1 ; e <- a[mp1-h]
+
a[(m-h+1):m] <- e + 1:h
+
combmat[,i] <- a
+
i <- i + 1
+ }}
Le logiciel R - Maˆ ıtriser le langage
ci-dessous g´ en` ere toutes les combinaisons de taille 3 ` a partir des ´ el´ ements du
vecteur 1:5.
> combn(5,3)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]
1
1
1
1
1
1
2
2
2
3
[2,]
2
2
2
3
3
4
3
3
4
4
[3,]
3
4
5
4
5
5
4
5
5
5
Lorsque l’on cherche ` a obtenir les choose(n,m) combinaisons (soit 1 313 400
par exemple si n = 200 et m = 3) ` a partir d’un vecteur de plus grande taille n,
le temps de calcul peut devenir plus important.
> system.time(x <- combn(200,3))
user system elapsed
2.013
0.040
2.054
On constate, en utilisant la fonction system.time(), que le calcul ci-dessus
prend plusieurs secondes sur l’ordinateur utilis´ e lors de l’´ ecriture de ce livre
(prenez une valeur sup´ erieure ` a 200 au besoin, si votre ordinateur est plus rapide).
Astuce
La fonction permn() du package combinat peut ˆ etre utilis´ ee pour g´ en´ erer toutes les permutations des ´ elements d’un vecteur.
Une version simplifi´ ee de la fonction originale combn() de R est donn´ ee
ci-dessous :
> combnR <- function(n,m) {
+ a <- 1:m ; e <- 0 ; h <- m
+ combmat <- matrix(0,nrow=m,ncol=choose(n,m))
+ combmat[,1] <- 1:m
+ i <- 2
+ nmmp1 <- n - m + 1
+ mp1 <- m + 1
+ while (a[1] != nmmp1) {
+
if (e
h <- 1 ; e <- a[m] ; a[m-h+1] <- e + 1
+
combmat[,i] <- a
+
i <- i + 1
+ } else {
+
h <- h + 1 ; e <- a[mp1-h]
+
a[(m-h+1):m] <- e + 1:h
+
combmat[,i] <- a
+
i <- i + 1
+ }}
