A partir d'une base de données unique, j'ai créé une liste capthist contenant 6 dataframes (allant de A à F), tous étant construits de la même manière, avec deux colonnes:
- identification (un nom)
- sexe (m ou f)
Le nombre de lignes varie d'un dataframe à l'autre.
Pour chaque dataframe, on trouve des mâles et des femelles, sauf pour le dataframe C, qui n'a que des mâles.
Pour les dataframes A,B,D,E et F il y a deux niveaux de facteur: "m" ou "f"
En revanche, le dataframe C n'a qu'un niveau de facteur: "m"
J'aimerais résoudre ce problème.
La liste en question est obtenue ainsi:
Code : Tout sélectionner
covariates(secr.ALL)
secr.ALL étant une liste capthist:
Code : Tout sélectionner
> class(secr.ALL)
[1] "list" "capthist"
Voici le dataframe qui pose problème:
Code : Tout sélectionner
> covariates(secr.ALL)$C
V5
LEO10 m
LEO12 m
LEO13 m
LEO14 m
> covariates(secr.ALL)$C$V5
[1] m m m m
Levels: m
Je pensais résoudre le problème simplement ainsi, mais sans résultat:
Code : Tout sélectionner
> levels(covariates(secr.ALL)$C$V5) <- c("m","f")
> nlevels(covariates(secr.ALL)$C$V5)
[1] 1
J'ai donc pensé à créer un dataframe nouveau dataC, travailler sur lui et ensuite le remplacer dans la liste, mais une fois remplacé, le niveau de facteur retourne à 1 de nouveau:
Code : Tout sélectionner
> dataC <- covariates(secr.ALL)$C
> levels(dataC$V5) <- c("m","f")
> dataC$V5
[1] m m m m
Levels: m f
> nlevels(dataC$V5)
[1] 2
> covariates(secr.ALL)$C <- dataC
> nlevels(covariates(secr.ALL)$C$V5)
[1] 1
Je suppose que le problème vient du fait que c'est une liste capthist et pas une liste 'classique'.
Si quelqu'un a une idée, je suis preneuse.
On m'a suggéré d'utiliser la fonction attr() pour le remplacement de dataC dans la liste mais je ne sais pas comment.
Merci,
Cordialement,
Elsa