2010-06-10 10 views
6

¿hay algo así como las condiciones "si no" en R?si no condiciones en R?

fácil Ejemplo (no funciona):

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

fun(5) 

mejores deseos Philipp

+1

Su ejemplo funciona correctamente. Pruebe 'divertido (0)'. Con 5, dice "si no es 5> 0". 5 es mayor que 0, entonces eso es 'VERDADERO', pero el no lo hace 'FALSO '. – Shane

Respuesta

22

El problema está en cómo se está definiendo la condición. Debe ser

if(!(x > 0)){ 

en lugar de

if(!x > 0){ 

Esto es porque !x convierte la entrada (un valor numérico) a una lógica - que dará TRUE para todos los valores excepto cero. Entonces:

> 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

Probar:

if(!condition) { do something } 
+0

Ya lo intenté, pero no es la solución :-( añadió un simple ejemplo anterior. – Philipp

+2

Tu ejemplo funciona – Shane

+0

tienes razón ... lástima de mí ^^ – Philipp

0

¿Qué tal esto?

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

fun(5)

[1] "Bigger than zero" 
+0

ifelse solo debe usarse para vectores de longitud> 1 –

Cuestiones relacionadas