Trames de données et is.nan ()
J'ai été en utilisant sum(is.na(my.df))
pour vérifier si mon bloc de données contient de NAs, qui a travaillé comme je m'y attendais, mais sum(is.nan(my.df))
n'a pas fonctionné comme je l'espérais.
> my.df <- data.frame(a=c(1, 2, 3), b=c(5, NA, NaN))
> my.df
a b
1 1 5
2 2 NA
3 3 NaN
> is.na(my.df)
a b
[1,] FALSE FALSE
[2,] FALSE TRUE
[3,] FALSE TRUE
> is.nan(my.df)
a b
FALSE FALSE
> sum(is.na(my.df))
[1] 2
> sum(is.nan(my.df))
[1] 0
Oh chers.
Est-il une raison de l'incohérence dans le comportement? Est-ce un manque de mise en œuvre, ou est-ce intentionnel? Quelle est la valeur de retour de is.nan(my.df)
signifie? Est-il une bonne raison de ne pas utiliser is.nan()
sur un ensemble de données d'image?
Dans la documentation de is.na( )
et is.nan( )
les types d'argument semble le même (bien qu'ils ne sont pas spécifiquement sur la liste des trames de données):
is.na()
: x R de l'objet à tester: les méthodes par défaut poignée atomique vecteurs, les listes et les pairlists.
is.nan()
: x R de l'objet à tester: les méthodes par défaut poignée atomique vecteurs, les listes et les pairlists.
source d'informationauteur Zach
Vous devez vous connecter pour publier un commentaire.
De
?is.nan
:Les colonnes d'un bloc de données sont techniquement "les éléments d'une liste", donc
is.nan(df)
renvoie un vecteur de longueur égale au nombre de colonnes de la trame de données, qui estTRUE
uniquement si la colonne est composée d'un seulNaN
élément:Si vous souhaitez un comportement correspondant à celui de
is.na
utilisezapply
:La réponse est 1 au lieu de 2 car
is.nan(NA)
estFALSE
...modifier: alternativement, vous pouvez simplement tourner le bloc de données dans une matrice:
mise à jour: ce comportement a changé peu de temps (deux mois) après la question a été posée, dans la R de la version 2.14 (octobre 2011): à partir de la Le fichier NEWS,