web-dev-qa-db-fra.com

Vérifie si la variable a la valeur ''

Dans un script, j’essaie d’exécuter parfois des variables avec '' (qui signifie: complètement vide), par exemple.

variable <- ''

Est-ce que quelqu'un connaît une méthode pour vérifier si la variable a la valeur ''?

is.null(variable) ne semble pas fonctionner. '' n'est pas la même chose que NULL.

13
rdatasculptor

'' est un caractère vide. Cela ne signifie pas signifie «complètement vide» - c’est en effet NULL.

Pour le tester, vérifiez l’égalité:

if (variable == '') …

Si vous voulez vérifier si une variable existe, vous devez utiliser… exists :

if (exists('variable')) …

Mais en réalité, il existe très peu de cas d’utilisation de exists dans le code normal, car en tant qu’auteur du code, vous devez savoir quelles variables existent et lesquelles ne le sont pas. Au contraire, il est principalement utile dans les fonctions de la bibliothèque.

Cependant, l’erreur que vous obtenez,

valeur manquante où TRUE/FALSE est nécessaire

not signifie-t-il que la variable n’existe pas? if ne peut pas traiter les valeurs manquantes, c’est-à-dire NA. Une NA survient à la suite de nombreux calculs qui contiennent eux-mêmes une valeur NA. Par exemple, si vous comparez NA à une valeur quelconque (même NA elle-même), vous obtenez à nouveau NA:

variable = NA
variable == NA
# [1] NA

Puisque if s'attend à TRUE ou FALSE, il ne peut pas traiter NA. S'il y a une chance que vos valeurs puissent être NA, vous devez vérifier cela explicitement:

if (is.na(variable) || variable == '') …

Cependant, il est généralement préférable d’exclure les valeurs NA de vos données dès le départ, afin qu’elles ne se propagent pas dans une situation comme celle décrite ci-dessus.

20
Konrad Rudolph

Dans le package stringi, il existe une fonction pour cela. 

require(stringi)    
stri_isempty(c("A","")) 

Vous pouvez également installer ce paquet depuis github: https://github.com/Rexamine/stringi

3
bartektartanus

Si vous souhaitez vérifier et remplacer ces valeurs par NAs en une fois, comme d'habitude, utilisez simplement dplyr::na_if():

variable <- ''
dplyr::na_if(variable, "")
#> [1] NA
0
Balthasar