Les fonctions de la famille apply() et la fonction which() peuvent permettre de compter les éléments identiques, négatifs, positifs ou encore supérieurs ou inférieurs à une certaine valeur dans un data.frame. iris# iris, un tableau de données m <- matrix(data=cbind(rnorm(30, 0), rnorm(30, 2), rnorm(30, 5)), nrow=30, ncol=3) # m, une matrice de données Calculer le nombre d’éléments identiques : ### Dans un tableau :lapply (iris, function(x) length(unique(x))) # retourne une liste sapply (iris, function(x) length(unique(x))) # retourne un vecteur numérique ### Dans une matrice : apply (m, 2,function(x) length(unique(x))) #retourne des entiers Calculer le nombre d’éléments supérieurs ou inférieur à une certaine valeur : ###Read More →

La fonction lapply() permet d’appliquer une fonction à chaque élément d’une liste. Le premier argument est une liste sur laquelle on veut appliquer la fonction placée en deuxième argument (mean, sum, sd, function(x)…). x <- list(a = 1:7, b = runif(n = 5, min = 10, max = 20), booleen = c(TRUE,FALSE,FALSE,TRUE)) y<-lapply(x,mean) #de manière plus générale, cela équivaut à : y<-apply(x,function(x) mean(x)) # on ajoute function(x) devant une les fonctions non-prédéfinies dans R z<-sapply(x,mean) # la fonction sapply est équivalente à lapply # mais lapply retourne une liste tandis que la fonction sapply retourne un vecteur numérique, une matrice ou quand cela n’est pasRead More →

La fonction class() permet d’obtenir la classe d’un objet et la fonction sapply() permet d’appliquer la fonction class() à toutes les colonnes d’un data.frame. iris #On visualise les données sapply(iris,class)   On obtient : sapply(iris,class) Sepal.Length  Sepal.Width  Petal.Length   Petal.Width      Species  « numeric »     « numeric »    « numeric »     « numeric »       « factor »Read More →

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écisantRead More →

Issu du package magrittr et disponible dans le tidyverse, le pipe vous permet de passer de : library(tidyverse) data(« population ») head(summarise(group_by(filter(population, year > 1999),country),moyenne = mean(population))) à population %>% filter(year > 1999) %>% group_by(country) %>% summarise(moyenne = mean(population)) %>% head() Plus clair, n’est-ce pas ! Alors, comment ça marche ? C’est très simple : l’élément à gauche de %>% se retrouve en premier argument de la fonction à droite. Autrement dit, f(x,y) s’écrit x %>% f(y). Comment faire si l’élément de gauche n’est pas le premier argument de celui de droite ? Vous pouvez y faire référence en le remplaçant par un point : list(c(1,2,3), c(4,5,6),Read More →

Avec R, il est tout à fait possible de réaliser une multiple importation des fichiers CSV (autres types de fichiers). La fonction ci-dessous utilise les fonctions bind_rows et la syntaxe de la librairie dplyr. multmerge <- function(mypath = getwd()){ require(dplyr) dataset <- list.files(path=mypath, full.names=TRUE, pattern= »\.csv ») %>% lapply(read.csv, header=TRUE, sep= »t ») %>% bind_rows() dataset } Dans cette fonction, l’objet mypath indique l’emplacement où se trouve tous les fichiers CSV. Par défaut, la fonction va chercher dans l’espace de travail actuel (getwd). Il est possible de le modifier manuel comme ci-dessous:  mydata <-  multmerge(mypath= »Nom/Du/Chemin/Des/Fichiers »)Read More →

Considérons un exemplela masse des larves de papillons varie avec la température et de la nourriture (plante)Pour tracer un barplot avec les barres d’erreur de ces deux facteurs : attach(data)mean.mass<-tapply(mass,list(T,H),mean)       # calcul de la moyenne pour chaque groupe sd<-tapply(mass,list(T,H),sd)                         # ou T est le facteur Température et H le facteur plantelength<-tapply(DTp,list(T,H),length)sqrt<-sqrt(length)length<-as.numeric(length)se<-sd/sqrt                                                   #calcul de l’erreur standard pour chaque groupegraphemass<-barplot(mean.mass,beside=TRUE,density=c(0,30),col=1,ylim=c(0,15.2),font=3,ylab= »masse (mg) »,)library(nmle)                                                #nécessaire pour appeler la fonction « segments » segments(graphemass, mean.mass -se,graphemass, mean.mass +se)       segments(graphemass-0.1, mean.mass -se,graphemass+0.1, mean.mass -se)segments(graphemass-0.1, mean.mass +se,graphemass+0.1, mean.mass +se)]Read More →

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 variablefor (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ésultatscolnames(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çantRead More →

R nous donne la possibilité, très pratique, de créer des fonctions personnalisées.Voici l’architecture globale : nomdemafonction<-function(variable1,variable2…){#ici on met le contenu de la fonction (généralement on effectue des transformations aux variables passées en argument)return(Variabledesortie)# il s’agit du résultat que va renvoyer la fonction}#une fois la fonction créée on peut l’utiliser: nomdemafonction(varA,varB) Contrairement à d’autres languages, il n ‘y a pas de contrôle du type de variable que l’on peut utiliser. Il faudra l’inclure dans la fonction pour, par exemple, vérifier que la variable A est bien un vecteur (et pas un data.frame par exemple) Voici un exemple de fonction, il s’agit d’une fonction simple qui vaRead More →