Vérifier si une variable est un nombre dans la R
J'ai les données suivantes cadre:
> ddf = data.frame(name=c('a','b'), value=c(10,20))
> ddf
name value
1 a 10
2 b 20
J'essaie d'obtenir de xx à partir de ddf à l'aide de la commande suivante:
> xx = ddf[ddf$name=='a','value']
> xx
[1] 10
> xx = ddf[ddf$name=='c','value']
> xx
numeric(0)
Comment puis-je tester si xx est un nombre valide et non pas " numeric(0)'. J'ai essayé de suivre:
> is.numeric(xx)
[1] TRUE
> is.na(xx)
logical(0)
> is.null(xx)
[1] FALSE
> is.logical(xx)
[1] FALSE
Je dois demander pour xx = ddf[ddf$name=='a', 'value']
de différents ddf
trames de données. Parfois ddf
ne contient pas de 'a'
et par conséquent, aucune valeur n'est retournée. Je tiens à le détecter.
- Note toutefois que "le nombre valide" n'est pas un paramètre dans
R
. Que faire si vous ne souhaitez pas autoriserNA
ouInf
valeurs? Assurez-vous que vous savez exactement ce que vous avez besoin de test pour! - Vous pouvez le vérifier sa longueur
- J'ai édité ma question, pour ce que j'en ai besoin. Je pense que la longueur(xx)>0 sera le mieux.
- Le
> 0
n'est pas nécessaire parce que0
est une logiqueFALSE
, et tout autre nombre est toujoursTRUE
. Doncif(!length(x))
serait plus propre.
Vous devez vous connecter pour publier un commentaire.
La façon la plus simple de le faire à l'aide de la base de R est de vérifier la longueur de
xx
.Si vous voulez vérifier que la variable est également numérique utilisation
is.numeric
Par exemple, en prenant votre exemple:
numeric
plutôt qu'à une autre classe, il faut donc en plus , pas à la place des OP du code. Voulais juste préciser ce point.Cette combine les deux tests. Tout d'abord, il vérifie que
xx
a classenumeric
(integer
est OK, puisque les sous-jacents vérification est faite paris.numeric
), et d'autre part, il vérifie que la longueur dexx
est un.Le code suivant utilise les expressions régulières pour confirmer que la chaîne de caractères qui contient des chiffres et a au moins un chiffre unique. Voir ci-dessous:
Ou si vous avez besoin de traiter avec les nombres négatifs et les décimales:
Comment quelque chose comme cela, où que vous venez de vérifier le nombre de lignes obtenues après filtration?