Explorons mon top 10 des fonctions et trucs intéressants qui nous facilitent la vie lors de la manipulation de données dans R.
Séquences
Vous voulez créer de longues séquences de nombres ou de lettres sans les écrire au long manuellement? Cette fonction permet de coller ensemble des chaînes de caractères ou de variables. Ce qui est important, c’est de spécifier le séparateur: Vous voulez que R place tous les fichiers de sortie dans un répertoire donné? Vous êtes-vous déjà retrouvé dans la situation où vous ne vouliez garder qu’une partie d’une chaîne de caractères? Deux fonctions peuvent vous aider avec cette situation de façon efficace. La fonction crée une liste dans laquelle on doit sélectionner la sous-chaîne désirée: Si votre séparateur est un caractère spécial, c’est-à-dire un caractère qui a une signification particulière dans une expression régulière (comme « . » qui veut dire « n’importe quel caractère » ou « | » qui veut dire « ou »), il fait recourir au « \\ » ou utiliser l’option fixed=TRUE. Un autre exemple: L’appartenance à une liste peut être testée rapidement avec R. Lorsque vous avez 2 listes, a et b et que vous voulez savoir combien d’éléments de a se trouvent dans b la syntaxe est Pour sélectionner une colonne spécifique dans un tableau sans devoir compter les colonnes pour connaître l’indice, on peut utiliser le nom de la colonne et « $ » : On peut aussi vouloir sélectionner les caractéristiques d’un objet. Par exemple, récupérer la p-value d’un test t de Student: Pour afficher les caractéristiques d’un objet et leur nom, il faut utiliser names(object). Pour obtenir une série de nombres aléatoires tirés d’une distribution normale, appelez rnorm(), tout en spécifiant le nombre de tirages, la moyenne et l’écart-type de la distribution désirée. Si vous êtes perdu et que vous voulez en apprendre plus sur une fonction, tapez ? devant le nom de la fonction. Ceci ouvrira le manuel d’utilisation où vous pourrez trouver les détails importants. Pour mettre des caractères en majuscules ou en minuscules les fonctions toupper() et tolower() sont utiles. rep() vous permet de faire des répétitions sur mesure. Vous pouvez spécifier le motif vous-même, avec le nombre de répétitions ou encore la longueur totale désirée avec length.out.
R vous permet de le faire avec l’opérateur « : ». Vous pouvez aussi utiliser seq() si vous cherchez à créer une séquence qui n’est pas incrémentée de 1. Finalement, letters
> 1:5
[1] 1 2 3 4 5
> seq(1, 10, 2)
[1] 1 3 5 7 9
> letters[1:5]
[1] "a" "b" "c" "d" "e"
> LETTERS[1:5]
[1] "A" "B" "C" "D" "E"
Paste
Un truc intéressant de paste() est qu’il est possible de la mettre dans une autre fonction ou dans une boucle.
Par exemple, si vous voulez créer une boucle qui, à chaque itération, écrit un fichier dont le nom est différent (fichier1, fichier2, fichier3,…).
Voici comment procéder:
>for (i in 1:3) {
print(paste("file", i, ".txt", sep=""))
}
[1] "file1.txt"
[1] "file2.txt"
[1] "file3.txt"
>for (i in 1:3) {
print(paste("file", i, ".txt", sep="_"))
}
[1] "file_1_.txt"
[1] "file_2_.txt"
[1] "file_3_.txt"
Répertoires de travail
Bravo pour la volonté de rester organisé!
getwd(), pour « get working directory », est une fonction qui imprime dans la console le répertoire de travail courant. Sa fonction soeur, setwd(), change le répertoire courant pour celui spécifié.Sous-chaînes et séparation de chaînes de caractères
Lorsque vous connaissez le caractère séparant les deux parties de la chaîne, utilisez strsplit(). Lorsque vous voulez une chaîne résultante de longueur spécifique, utilisez substr().
Par exemple:
Lorsque des noms de gènes ressemblent à « CPB1_1360 », ils doivent être séparés sur le caractère « _ » pour récupérer les symboles.strsplit("CPB1_1360", split="_")
>strsplit("CPB1_1360", split="_")[[1]][1]
[1] "CPB1"
>strsplit("CPB1_1360", split="_")[[1]][2]
[1] "1360"
>strsplit("CPB1|1360", split="\\|")
>strsplit("CPB1|1360", split="|", fixed=TRUE)
Pour raccourcir les identifieurs de patients de type « TCGA.E2.A154.01A.11R.A115.07 » à TCGA-XX-XXXX, vous utilisez substr() en spécifiant le début et la fin:> substr("TCGA.E2.A154.01A.11R.A115.07", start=0, stop=12)
[1] "TCGA.E2.A154"
Appartenance à une liste
a%in%b
Ceci retourne un vecteur de la même longueur que a qui contient des valeurs booléennes (vrai/faux), caractérisant l’appartenance ou non à la liste b de chaque élément de a. Attention, pour obtenir le résultat contraire, la syntaxe est inversée ! b%in%a
Voici un exemple:> a = c("A","B","C")
> b = c("C","D","R")
> a%in%b
[1] FALSE FALSE TRUE
> b%in%a
[1] TRUE FALSE FALSE
Sélection
> a
bcr_patient_barcode er_status_by_ihc pr_status_by_ihc her2_status_by_ihc
1 TCGA-AR-A1AR Negative Negative Negative
2 TCGA-BH-A1EO Positive Positive Negative
3 TCGA-BH-A1ES Positive Positive Negative
4 TCGA-BH-A1ET Positive Positive Negative
> a$er_status_by_ihc
[1] "Negative" "Positive" "Positive" "Positive"
t.test$p.value
> t.test(e1[,1],e2[,2])
Welch Two Sample t-test
data: e1[, 1] and e2[, 2]
t = 0.0581, df = 1645.314, p-value = 0.9537
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-0.02670277 0.02833160
sample estimates:
mean of x mean of y
0.5019641 0.5011497
> t.test(e1[,1],e2[,2])$p.value
[1] 0.9537151
> names(t.test(e1[,1],e2[,2]))
[1] "statistic" "parameter" "p.value" "conf.int" "estimate" "null.value" "alternative"
[8] "method" "data.name"
Distributions et échantillonnage aléatoire.
Aide
Majuscules, minuscules
> toupper("FoRMat TrES LaiD")
[1] "FORMAT TRES LAID"
> tolower("RENdS-MoI PLUs PeTIt")
[1] "rends-moi plus petit"
Répétitions et motifs
Voici une chanson pop très répétitive (répéter 4 fois d’une voix nasillarde) :> rep(c("I'm like a bird, I'll only fly away", "I don't know where my soul is, I don't know where my home is"),time=4)
[1] "I'm like a bird, I'll only fly away"
[2] "I don't know where my soul is, I don't know where my home is"
[3] "I'm like a bird, I'll only fly away"
[4] "I don't know where my soul is, I don't know where my home is"
[5] "I'm like a bird, I'll only fly away"
[6] "I don't know where my soul is, I don't know where my home is"
[7] "I'm like a bird, I'll only fly away"
[8] "I don't know where my soul is, I don't know where my home is"
Laisser un commentaire