J'ai été surpris d'apprendre que R n'est pas livré avec une fonction pratique pour vérifier si le nombre est entier.
is.integer(66) # FALSE
Les fichiers d'aide préviennent :
is.integer(x)
ne teste pas six
contient des nombres entiers ! Pour cela, utilisezround
comme dans la fonctionis.wholenumber(x)
dans les exemples.
L'exemple comporte cette fonction personnalisée comme "solution de rechange".
is.wholenumber <- function(x, tol = .Machine$double.eps^0.5) abs(x - round(x)) < tol
is.wholenumber(1) # is TRUE
Si je devais écrire une fonction pour vérifier les entiers, en supposant que je n'ai pas lu les commentaires ci-dessus, j'écrirais une fonction qui ressemblerait à quelque chose comme
check.integer <- function(x) {
x == round(x)
}
Où mon approche échouerait-elle ? Que feriez-vous si vous étiez à ma place ?
0 votes
J'espère que si
round(x)
est implémentée correctement, le résultat de son application à un entier serait toujours cet entier...1 votes
Jetez un coup d'œil à la FAQ sur R cran.r-project.org/doc/FAQ/
5 votes
> check.integer(9.0) [1] VRAI ce n'est pas le cas.
0 votes
@PengPeng, VitoshKa a corrigé cela dans la réponse acceptée.
4 votes
Je pense qu'il y a une confusion sur les concepts mathématiques et informatiques de l'entier. La fonction
is.integer
vérifie le concept de calcul, lecheck.integer
La fonction utilisateur vérifie le point de vue mathématique.