Lorsque j'exécute 0/0
dans R, j'obtiens un NaN
comme sortie. Mais est-il possible que je puisse imprimer 0/0
en tant que 1
? Je sais que je pourrais utiliser quelques instructions if
pour y parvenir. J'aimerais savoir s'il existe un autre moyen d'y parvenir.Force R pour imprimer 0/0 sous la forme 1
0
A
Répondre
3
Vous pouvez définir votre propre symbole de division en particulier pour cela. Par exemple,
'|' <- function(a,b)ifelse(a==0 & b==0, 1, a/b)
> 0|0
[1] 1
> 3|4
[1] 0.75
+0
Si vous préférez un nom plus parlant, vous pouvez définir un opérateur entouré de '%', comme dans '% div%'. Si l'efficacité est une préoccupation, je recommanderais '% div% <- fonction (a, b) {x <- a/b; x [est.nan (x)] <- 1; x} '(mais l'amélioration de l'efficacité est très faible) – Benjamin
0
Autre moyen que d'utiliser la déclaration If
serait
# Assign NaN to vector
a <- 0/0
# If is NaN assign value 1
a[is.nan(a)] <- 1
Pouvez-vous simplement remplacer vos 'NaN's par' 1'? 'x [est.nan (x)] <- 1'? – Phil
Voir les réponses à cette question, https://stackoverflow.com/questions/8022979/operator-overloading-and-class-definition-in-r-use-a-different-base-field-corpu Décrit comment surcharger opérations mathématiques. – Suren
Une option plus simple serait de définir une fonction, disons 'div', et de l'utiliser pour la division. – Suren