В R, каково ключевое слово для выпрыгивания из функции без ее выполнения? - PullRequest
7 голосов
/ 08 июня 2011

Мне интересно, есть ли какое-либо ключевое слово в R для выпрыгивания из функции без выполнения остальной части. В C, Java или Matlab есть ключевое слово return. Но ключевое слово return в R работает иначе, чем в этих языках. Вот пример,

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

В этом примере такие языки, как Java, не будут выполнять «остальное» при достижении «возврата», в то время как в R «возврат» находится только в области действия оператора if, а остальные функции все еще выполняются. В этом конкретном примере я мог бы добавить блок «else» для достижения этой цели, но я хотел бы знать, есть ли какое-либо ключевое слово, которое будет иметь такое же поведение, как в Java и т. Д. Спасибо.

Ответы [ 2 ]

7 голосов
/ 09 июня 2011

То, что вы показываете, на самом деле является синтаксически допустимым R-кодом ... но вы ошиблись: не предоставил значение для return. Итак, вот исправленная версия:

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> 
3 голосов
/ 08 июня 2011

Я думаю, что вы ищете:

stopifnot()
...