R n’aime pas les boucles: c’est long, parfois ca plante..mais surtout c’est long :).

Une des fonctions qu’il faut absolument maîtriser est apply. Elle permet de réaliser en parallèle la même opération sur toutes les lignes/ toutes les colonnes d’une matrice ou d ‘un jeu de données.

Pour utiliser apply, il faut

  • créer une fonction qui prend en paramètre un vecteur et qui nous ressort une transformation de ce vecteur.
  • que ce vecteur soit de la forme qu’une ligne ou qu’une colonne de notre jeu de données (prendre en compte les variables quali, l’ordre des variables..)
  • lancer apply sur son jeu de données, en précisant la fonction et s’il faut le prendre en ligne ou en colonne.

data(iris)
# on va fabriquer une fonction qui, pour chaque ligne, nous donnera la somme de Sepal.Length, Sepal.Width, Petal.Length et Petal.Width

masomme<-function(monvec){
# les vecteurs sont ici de la forme c(5.1,3.5,1.4,0.2, setosa). Un simple sum(monec) ne fonctionnerait pas à cause de setosa
return(sum(as.numeric(monvec[1:4])))# le as.numeric permet de passer outre la transformation en caractères
}
lasomme<-apply(data.frame(iris),FUN=masomme,MARGIN=1)
head(cbind(iris,lasomme))# on rajoute une colonne avec le résultat et on regarde le début du jeu de données


Cette transformation restera très rapide même avec un très grand nombre de lignes