L’objectif est de calculer une moyenne sur des réplicats techniques/biologiques.
Tous les réplicats d’une condition doivent avoir le même nom.

Tout d’abord on crée une matrice d’accueil pour les résultats.
Nombre de niveaux : le tableau initial contient y réplicats pour z conditions, donc y * z lignes.
La matrice d’accueil n’aura donc plus que z lignes.

Prenons l’exemple du jeu de données « iris ».
Calculons les moyennes par variété pour chaque variable.


data(iris)
niveaux<-length(levels(iris$Species))
iris.moyenne<-matrix(nrow=niveaux, ncol=(ncol(iris)-1))

#ensuite on calcule la moyenne pour chaque condition, par variable

for (i in 1:(ncol(iris)-1))
{iris.moyenne[,i]<-tapply(iris[,i], iris$Species, mean)}

#il n'y a plus qu'à améliorer l'allure des résultats

colnames(iris.moyenne)<-colnames(iris[, 1:4])
rownames(iris.moyenne)<-levels(iris$Species)
iris.moyenne

On peut également créer une matrice pour des écarts-types par exemple, en remplaçant la fonction dans tapply : utiliser « sd » au lieu de « mean », et changer le nom de la matrice d’accueil.

De manière générale, les fonctions « apply » sont très puissantes pour les calculs et sont très rapides.