R ne peut pas convertir NaN NA
J'ai un bloc de données avec plusieurs facteur de colonnes contenant des NaN
's que je voudrais le convertir à NA
(la NaN
semble être un problème pour l'utilisation de la régression linéaire des objets à prévoir sur les nouvelles données).
> tester1 <- c("2", "2", "3", "4", "2", "3", NaN)
> tester1
[1] "2" "2" "3" "4" "2" "3" "NaN"
> tester1[is.nan(tester1)] = NA
> tester1
[1] "2" "2" "3" "4" "2" "3" "NaN"
> tester1[is.nan(tester1)] = "NA"
> tester1
[1] "2" "2" "3" "4" "2" "3" "NaN"
vous pouvez avoir un coup d'oeil à
L'exemple n'a aucun sens: comment vous proposez-vous d'utiliser des données de caractère dans une régression linéaire?
C'est un facteur. Dernière, j'ai vérifié lm() peut traiter w/ facteurs. Je devrais avoir jeté un facteur (ne) autour de l'exemple.
setattr
à partir des données.table d'emballage. vérifiez également MatthewDowle la réponse à ma question plus tôt aujourd'hui: stackoverflow.com/questions/9463980/...L'exemple n'a aucun sens: comment vous proposez-vous d'utiliser des données de caractère dans une régression linéaire?
C'est un facteur. Dernière, j'ai vérifié lm() peut traiter w/ facteurs. Je devrais avoir jeté un facteur (ne) autour de l'exemple.
OriginalL'auteur screechOwl | 2012-02-27
Vous devez vous connecter pour publier un commentaire.
Voici le problème: Votre vecteur de caractère est dans la mode, alors, évidemment, ce n'est "pas un nombre". Ce dernier élément a obtenu interprété comme la chaîne "NaN". À l'aide de
is.nan
n'a du sens que si le vecteur est numérique. Si vous souhaitez apporter une valeur manquante dans un caractère de vecteur (afin de les gérer correctement par les fonctions de régression), puis (sans les guillemets),NA_character_
.Ni "NA", ni de "NaN" sont vraiment en manque de caractère des vecteurs. Si pour quelque raison il y a des valeurs dans un facteur variable qui ont été "NaN" alors que vous auriez pu simplement utiliser logiques d'indexation:
Que le dernier résultat peut être surprenant. Il y a un "NaN", mais aucun des éléments est "NaN". Au lieu de cela, l'élément qui a été "NaN" est aujourd'hui une véritable valeur manquante signifié imprimés .
OriginalL'auteur 42-
Vous ne pouvez pas avoir
NaN
un personnage, vectoriel, qui est ce que vous avez ici:Avis comment R pense que c'est une chaîne de caractères.
Vous pouvez créer
NaN
dans un vecteur numérique:Puis, bien sûr, R peut convertir
NaN
àNA
que par votre code:OriginalL'auteur Gavin Simpson
EDIT:
Gavin Simpson dans les commentaires me rappelle que, dans votre situation, il y a beaucoup de manières plus faciles à convertir ce qui est vraiment un "NaN" à un "NA":
Solution:
Pour détecter les éléments du caractère de vecteur sont
NaN
, vous avez besoin de convertir un vecteur en un vecteur numérique:Explication:
Il ya un couple de raisons que cela ne fonctionne pas comme vous l'attendez.
Tout d'abord, bien que
NaN
signifie "Pas un Nombre", il n'en classe"numeric"
, et n'a de sens qu'à l'intérieur d'un vecteur numérique.Deuxième, lorsqu'il est inclus dans un personnage, vectoriel, symbole
NaN
silencieusement convertie en chaîne de caractères"NaN"
. Lorsque vous ensuite de le tester pournan
-ness, la chaîne de caractères renvoieFALSE
:NA
dans l'un de leurs exemples.OK. Fixe maintenant. Merci pour la tape sur l'épaule en me rappelant de tirer ma tête ... les mauvaises herbes!
Je pense toujours que vous êtes avoir à y penser ce que l'OP veut. Il veut
NaN
converti àNA
pas la chaîne versions mais la vraie R versions indiquant Pas Un Nombre, et de l'absence, respectivement. Ignorer la"NA"
dans l'une des OP exemple - qui est un leurre, je présume qu'ils ont pensé qu'en citant NA pourrait fonctionner commeNA
un personnage, vectoriel ou quelque chose comme ça.Je sais ce que tu veux dire, mais l'OP cite aussi tous les entiers dans l'exemple des vecteurs, alors il y a plus de 25 harengs rouges là-haut, si vous avez raison. (Bien que la référence à NaN donne des problèmes dans des régressions linéaires maintenant me fait penser que vous êtes probablement à droite).
Wow. Mon premier downvote, sans doute pour répondre à la question de l'OP en fait demandé, plutôt que ce qu'ils peuvent dire à demander!? Oh bien.
OriginalL'auteur Josh O'Brien