2010-06-10 8 views
6

Gibt es irgendetwas wie "wenn nicht" Bedingungen in R?wenn nicht Bedingungen in R?

leicht Beispiel (nicht funktioniert):

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

fun(5) 

Beste Wünsche Philipp

+1

Ihr Beispiel funktioniert richtig. Probiere 'fun (0)'. Mit 5 sagt es "wenn nicht 5> 0". 5 ist größer als 0, also ist das "TRUE", aber das macht es nicht "FALSE". – Shane

Antwort

22

Das Problem besteht darin, wie man den Zustand definieren. Es sollte

if(!(x > 0)){ 

statt

if(!x > 0){ 

sein, weil !x die Eingabe konvertiert (ein numerische) zu einem logisch - die TRUE für alle Werte mit Ausnahme von Null geben wird. Also:

> 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

Versuchen:

if(!condition) { do something } 
+0

Ich habe das schon ausprobiert, aber es ist nicht die Lösung :-( hinzugefügt ein einfaches Beispiel oben. – Philipp

+2

Ihr Beispiel funktioniert. – Shane

+0

Sie haben Recht ... Schande über mich ^^ – Philipp

0

Wie wäre das?

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

fun(5)

[1] "Bigger than zero" 
+0

ifelse sollte nur für Vektoren der Länge> 1 verwendet werden –

Verwandte Themen