2011-06-08 13 views
7

Me pregunto si hay una palabra clave en R para saltar de una función sin ejecutar el resto. En C, Java o Matlab, aparece la palabra clave 'return'. Pero la palabra clave 'return' en R funciona de manera diferente a esos idiomas. He aquí un ejemplo,En R, ¿cuál es la palabra clave para saltar de una función sin ejecutar el resto?

myfunc = function() { 
    if (TRUE) { 
     return # hopefully, jump out of the function 
    } 
    print('the rest of the function is still executed!') 
} 

En el ejemplo, lenguajes como Java no se ejecutan 'el resto' cuando se cumple 'retorno', mientras que en R 'retorno' es sólo en el ámbito de la instrucción if y la el resto de las funciones aún se ejecuta. En este ejemplo en particular, podría haber agregado un bloque 'else' para lograrlo, pero me gustaría saber si hay alguna palabra clave que ofrezca comportamientos similares a los de Java, etc. Gracias.

Respuesta

7

lo que muestran es en realidad código R sintácticamente válida ... pero usted tiene el error de no suministrar un valor-return. Así que aquí está una versión corregida:

R> myfunc <- function() { 
    if (TRUE) { 
     return(NULL) # hopefully, jump out of the function 
    } 
    print('the rest of the function is still executed!') 
} 
myfunc <- function() { 
+ if (TRUE) { 
+  return(NULL) # hopefully, jump out of the function 
+ } 
+ print('the rest of the function is still executed!') 
+ } 
R> myfunc() 
NULL 
R> 
+0

Gracias por la respuesta. Acabo de descubrir que return() también funcionaría y devolvería NULL como valor predeterminado, pero supongo que proporcionar un valor explícitamente sería un buen estilo. Gracias. – Causality

+0

+1, nunca se dio cuenta de 'return()' también dejó de ejecutar la función, lo que ahorrará algo de 'else' y' {} 'en mis códigos, seguro! –

3

creo que lo que estás buscando es:

stopifnot() 
+0

stopifnot() es muy útil, pero aceptaría la respuesta de Dirk. Gracias. – Causality

Cuestiones relacionadas