Pourquoi un vide dataframe échoué à l'est.null() test?
veuillez m'excuser si ma question est assez basique.
J'ai créé un vide de la trame de données par df <- data.frame()
et, évidemment, le bloc de données est NULL (vide). lorsque j'essaie de vérifier si le bloc de données est vide par is.null(df)
, le résultat est FAUX. Quelle est la différence entre NULL
et empty
dans R. Dans ce cas, si le bloc de données n'est pas NULL
, alors qu'est-ce que dans le vide de la trame de données et quand il sera NULL
. Grâce
df
existe, donc il n'est pas null.is.empty(df)
est VRAI, cependant.- D'où vient
is.empty
? - Oups, désolé, je suppose que c'est à partir de
spatstat
! - Erreur: impossible de trouver la fonction "est.vide"
- il y a pas une telle fonction dans R
- Il est
spatstat
paquet, comme @cphlewis dit ci-dessus. - vous devez installer spatstat paquet. Alors la fonction est spatstat::est.empty() Ce n'est pas un builtin fonction.
- Pourrais-je savoir quand
is.null()
va êtreTRUE
. is.null(NULL)
oux <- NULL; is.null(x)
. Autant que je sache, il n'y a pas d'autre utilisation deis.null()
.- Mon argument en cas de bloc de données. Le stockage
NULL
, puis en cochant mènera toujours àTRUE
. - Dès qu'une variable est un bloc de données, il ne peut pas être NULL car il a peu de contenu: il a une classe. Le même est vrai pour toutes les autres classes. Par exemple, dans
a<-numeric()
,a
est vide, mais non NULLES.
Vous devez vous connecter pour publier un commentaire.
df
n'est pas NULLE, car c'est un bloc de données et a donc certaines propriétés définies. Par exemple, il a une classe. Et vous pouvez obtenir le nombre de lignes dans le bloc de données à l'aide denrow(df)
, même si le résultat doit arriver à zéro. Par conséquent, le nombre de lignes est bien définie.Comme fas que je sache, il n'y a pas de
is.empty
de commande dans la base de R. Ce que vous pourriez faire est, par exemple, à la suite deCela donne le VRAI vide trame de données (qui est, sans lignes) et false sinon.
La raison pour laquelle vérifier
is.data.frame
première est quenrow
peut causer une erreur, si elle est appliquée à rien d'autre qu'un bloc de données. Grâce à&&
,nrow(df)
sera évaluée uniquement sidf
est un bloc de données.names(df)
est vide (character(0)
), trop.nrow(df)==0
qui est évidemment de0
et pas besoin d'écrire " est.les données.cadre(df)`names(df)
. Les données suivantes cadredf<-data.frame(a=numeric(),b=numeric())
a pas de contenu, mais les noms sont néanmoins défini. Donc ma définition dirais que c'est vide, la vôtre dirais qu'il ne l'est pas. Tout est une question de ce que vous acutally à vérifier, bien sûr.is.data.frame
si vous voulez éviter un comportement étrange dans le cas oùdf
n'est pas un bloc de données. Si vous êtes sûr qu'il sera toujours un bloc de données, vous pouvez omettreis.data.frame
.data.frame()
crée un objet qui a une bloc de données classe. Parce que l'objet existe,is.null
sera de retour FAUX. UnNULL
variable n'a aucune classe et aucun contenu.is.null
sera de retourFALSE
parce que l'objet n'est pas NULLE; parce que l'objet existe,is.null
ne reviendra pas "Erreur: objet non trouvé."Réponses ci-dessus sont correctes, est.na et est.nul ne pouvait pas ne pas détecter valeur vide dans R. c'est Ce que je voudrais faire pour calculer le nombre de valeur vide que vous avez dans votre bloc de données 'df' dans ce cas.
est.na(df[df =="]) <- TRUE # il suffit de remplacer NA à la valeur vide dans le df.
somme(est.na(df)) # vous donnera une idée du nombre de valeurs vides que vous avez dans votre 'df'.
Espère que cela est utile.