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
.
''
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.
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
Si vous souhaitez vérifier et remplacer ces valeurs par NA
s en une fois, comme d'habitude, utilisez simplement dplyr::na_if()
:
variable <- ''
dplyr::na_if(variable, "")
#> [1] NA