NA en 0, data[is.na(data)]=0 renvoit In `[<-.factor`(`*tmp*`, thisvar, value = 0) : invalid factor level, NA generated

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Augustin Soulard
Messages : 30
Enregistré le : 08 Avr 2019, 07:18

NA en 0, data[is.na(data)]=0 renvoit In `[<-.factor`(`*tmp*`, thisvar, value = 0) : invalid factor level, NA generated

Messagepar Augustin Soulard » 28 Juil 2020, 10:36

Bonjour,

J'ai un tableau de donnée, un mixte entre des densités d'espèces et des facteurs pour les modalités de mon étude. Voici le tableau : https://drive.google.com/file/d/1khiKjE ... sp=sharing

le tableau ets issue d'un merge :

Code : Tout sélectionner

phyto = merge(phyto_GL_2018,phyto_gy,by="species",all=T)

J'ai essayé de jouer avec l'argument "incomparables", mais cela ne donne rien.

J'essaie de convertir les NAs en 0

Code : Tout sélectionner

phyto[is.na(phyto)]=0


Cela me renvois le swarning suivant et finalement, les NAs sont toujours là :

Warning messages:
1: In `[<-.factor`(`*tmp*`, thisvar, value = 0) :
invalid factor level, NA generated
2: In `[<-.factor`(`*tmp*`, thisvar, value = 0) :
invalid factor level, NA generated
3: In `[<-.factor`(`*tmp*`, thisvar, value = 0) :
invalid factor level, NA generated
4: In `[<-.factor`(`*tmp*`, thisvar, value = 0) :
invalid factor level, NA generated
5: In `[<-.factor`(`*tmp*`, thisvar, value = 0) :
invalid factor level, NA generated
6: In `[<-.factor`(`*tmp*`, thisvar, value = 0) :
invalid factor level, NA generated
7: In `[<-.factor`(`*tmp*`, thisvar, value = 0) :
invalid factor level, NA generated
8: In `[<-.factor`(`*tmp*`, thisvar, value = 0) :
invalid factor level, NA generated
9: In `[<-.factor`(`*tmp*`, thisvar, value = 0) :
invalid factor level, NA generated
10: In `[<-.factor`(`*tmp*`, thisvar, value = 0) :
invalid factor level, NA generated

Avez-vous une idée du problème ?

Bonne journée,

Augustin

Facundo Muñoz
Messages : 156
Enregistré le : 04 Juil 2019, 09:58
Contact :

Re: NA en 0, data[is.na(data)]=0 renvoit In `[<-.factor`(`*tmp*`, thisvar, value = 0) : invalid factor level, NA gener

Messagepar Facundo Muñoz » 28 Juil 2020, 14:33

Bonjour,

Le tableau de données que vous avez partagé et l'objet "phyto" sur lequel vous travaillez dans R ne sont pas la même chose. Il est important de savoir comment vous avez importé ce jeu de données dans R pour diagnostiquer le problème. Le tableau original ne suffit pas : moi je l'ai importé et j'ai pu exécuter

Code : Tout sélectionner

phyto[is.na(phyto)]=0
sans problème. Je ne peux pas reproduire votre problème comme ça.


Ceci dit, je suspecte que vous avez certaines variables définies comme facteur (i.e. catégorielles) ce qui peut poser des problèmes :

Code : Tout sélectionner

## Substitution de NA problématique avec facteurs
x <- factor(c(1, 2, NA, 3, NA, 4))
x[is.na(x)]
#> [1] <NA> <NA>
#> Levels: 1 2 3 4
x[is.na(x)]=0
#> Warning in `[<-.factor`(`*tmp*`, is.na(x), value = 0): invalid factor level, NA
#> generated

## Pas de problème avec des vecteurs numériques où character
xn <- as.numeric(x)
xn[is.na(xn)]
#> [1] NA NA
xn[is.na(xn)]=0
print(xn)
#> [1] 1 2 0 3 0 4

xc <- as.character(x)
xc[is.na(xc)]
#> [1] NA NA
xc[is.na(xc)]=0
print(xc)
#> [1] "1" "2" "0" "3" "0" "4"


Vérifiez cela, et importez les données avec l'argument

Code : Tout sélectionner

StringsAsFactors = FALSE
pour éviter le problème.

Cordialement,
ƒacu.-

Augustin Soulard
Messages : 30
Enregistré le : 08 Avr 2019, 07:18

Re: NA en 0, data[is.na(data)]=0 renvoit In `[<-.factor`(`*tmp*`, thisvar, value = 0) : invalid factor level, NA gener

Messagepar Augustin Soulard » 30 Juil 2020, 09:49

Merci pour votre réponse, il s'agissait bien d'un problème de valeurs numériques qui étaient sous forme de facteurs. Ce qui est étrange c'est que pourtant is.na(phyto) renvoyez une matrice de booléen correct avec les TRUE et FALSE bien placés.

Bonne journée,

Augustin


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité