Création d'une liste
Une liste est une collection d'objets (non nécessairement de meme types) ; elle se crée via la fonction list :
> seq1 <- c(0.2, 0.3, 0.4, 0.1)
> L1 <- 58402
> res <- list(L1, seq1)
> res
[[1]]
[1] 58402
[[2]]
[1] 0.2 0.3 0.4 0.1
Pour rallonger une liste d'éléments, on utilise l'opérateur d'assemblage c() :
>espece1<-"phage"
>c(espece1,res)
[[1]]
[1] "phage"
[[2]]
[1] 58402
[[3]]
[1] 0.2 0.3 0.4 0.1
Contrairement `a data.frame, la fonction list ne conserve pas les noms des objets ; autrement dit, la longueur de la séquence (L1) est le premier élément de la liste, et la composition en nucléotides est le 2 eme élément. On peut attribuer des étiquettes différentes plus explicites aux différents éléments d'une liste, ce qui sera tres pratique pour y accéder (sans avoir a se souvenir dans quel ordre ils sont rangés dans la liste !). Par exemple,
> seq1 <- c(0.2, 0.3, 0.4, 0.1)
> L1 <- 58402
> res <- list(longueur = L1, composition = seq1)
> res
$longueur
[1] 58402
$composition
[1] 0.2 0.3 0.4 0.1
pour accéder aux champs longueur (resp. composition) de la liste res, on utilisera l'opérateur $ : res$longueur (resp. res$composition).
Pour accéder aux objets d'une liste on utilisera soit les crochets simples (dans ce cas une liste est retournée), soit les crochets doubles (dans ce cas l'objet est extrait) :
> seq1 <- c(0.2, 0.3, 0.4, 0.1)
> L1 <- 58402
> titre <- "phage"
> res <- list(titre, L1, seq1)
> res[1:2]
[[1]]
[1] "phage"
[[2]]
[1] 58402
> res[[3]]
[1] 0.2 0.3 0.4 0.1
Si l'on a donné des étiquettes aux différents objets de la liste, alors on peut extraire ces objets en utilisant l'opérateur $ :
> seq1 <- c(0.2, 0.3, 0.4, 0.1)
> L1 <- 58402
> titre <- "phage"
> res <- list(espece = titre, longueur = L1, composition = seq1)
> res$espece
[1] "phage"
> res$longueur
[1] 58402
> res$composition
[1] 0.2 0.3 0.4 0.1
maliste <- list(nom="Fred", epouse="Marie", monvecteur)
On peut alors afficher le contenu de la liste maliste en tapant son nom :
maliste
$nom
[1] "Fred"
$epouse
[1] "Marie"
[[3]]
[1] 8 6 9 10 5
Les composantes d'une liste sont numérotées et on peut y accéder en utilisant des indices. On peut donc extraire le contenu d'une composante d'un élément d'une liste en tapant le nom de la liste avec l'indice de la composante à extraire entre double crochets :
maliste[[2]]
[1] "Marie"
maliste [[3]]
[1] 8 6 9 10 5
Les composantes d'une liste peuvent être également nommées, et dans ce cas on peut accéder à leur contenu en tapant le nom de la liste suivi d'un $, suivi du nom de la composante. Par exemple maliste$nom est identique à maliste[[1]]. On peut retrouver les noms attribués aux champs d'une liste avec la fonction attributes(). Ainsi par exemple :
attributes(maliste)
$names
[1] "nom" "epouse" ""
Il est possible de concaténer plusieurs listes en une seule au moyen de la fonction c(liste1, liste2, ...), comme pour les vecteurs.