2010-06-10 5 views
6

Y at-il quelque chose comme "sinon" conditions dans R?sinon conditions dans R?

Exemple (ne fonctionne pas) facile:

fun <- function(x) 
{ 
if (!x > 0) {print ("not bigger than zero")} 
} 

fun(5) 

Meilleurs voeux Philipp

+1

Votre exemple fonctionne correctement. Essayez 'fun (0)'. Avec 5, il dit "sinon 5> 0". 5 est supérieur à 0, donc c'est TRUE, mais le non le fait 'FALSE'. – Shane

Répondre

22

Le problème est dans la façon dont vous définissez la condition. Il devrait être

if(!(x > 0)){ 

au lieu de

if(!x > 0){ 

C'est parce que !x convertit l'entrée (un numérique) à une logique - qui donnera TRUE pour toutes les valeurs sauf zéro. Donc:

> fun <- function(x){ 
+ if (!(x > 0)) {print ("not bigger than zero")} 
+ } 
> fun(1) 
> fun(0) 
[1] "not bigger than zero" 
> fun(-1) 
[1] "not bigger than zero" 
3

Essayez:

if(!condition) { do something } 
+0

J'ai déjà essayé, mais ce n'est pas la solution :-( ajouté un exemple simple ci-dessus – Philipp

+2

Votre exemple fonctionne – Shane

+0

vous avez raison ... honte à moi ^^ – Philipp

0

Comment cela?

fun<-function(x){ ifelse(x>0,"not bigger than zero","zero or less") }

fun(5)

[1] "Bigger than zero" 
+0

ifelse ne doit être utilisé que pour les vecteurs de longueur> 1 –