2010-06-10 8 views
6

Czy jest coś takiego jak warunki "jeśli nie" w R?jeśli nie warunki w R?

łatwy Przykład (nie działa):

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

fun(5) 

najlepsze życzenia Philipp

+1

Twój przykład działa poprawnie. Spróbuj 'zabawy (0)'. Przy 5 oznacza "jeśli nie 5> 0". 5 jest większe od 0, więc jest to "PRAWDA", ale nie powoduje "FALSE". – Shane

Odpowiedz

22

Problem polega na tym, w jaki sposób definiowania warunku. Powinno być

if(!(x > 0)){ 

zamiast

if(!x > 0){ 

To dlatego !x przetwarza wejście (liczbowy) do logicznego - co daje TRUE dla wszystkich wartości z wyjątkiem zera. A więc:

> 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

Spróbuj:

if(!condition) { do something } 
+0

Próbowałem już, ale to nie jest rozwiązanie :-( dodał prosty przykład powyżej – Philipp

+2

Twój przykład działa – Shane

+0

masz rację ... wstyd mi ^^ – Philipp

0

Jak na ten temat?

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

fun(5)

[1] "Bigger than zero" 
+0

ifelse powinno być używane tylko dla wektorów o długości> 1 –