在R语言中,如何从函数中跳出而不是循环?

5

好的,我正在撰写一个调用几个函数的较大函数。

问题在于,在某些逻辑条件下,我需要跳出“function_inner”,而不打破“function_outer”。 Break似乎适用于循环,而stop则停止所有函数...有什么想法吗?

function_outer <- function(){

    beta =1
        function_inner <- function(beta){
        if (beta==1){?break?stop}
        print("Its not working")
         }
    return(beta)
}
1个回答

6

您的意思是要返回一个值吗?

function_outer <- function(){

  beta =1
  function_inner <- function(beta){
    if (beta==1){ return("Inner beta is 1") }
    print("Its not working")
     }
  return(beta)
}

不,我只需要停止运行function_inner函数... 不过我想我可以从中返回一些东西。那应该可以。谢谢! - mmann1123
2
回顾这个问题,return(NULL) 是一个相当不错的习惯用法。 - Ari B. Friedman
然而,如果你事先不知道函数需要运行多少次,仍然可能想要在*applyreplicate调用中跳出一个函数。在我的情况下,我正在尝试编写一个函数来读取一个长度未知的大文件。replicate是迄今为止读入信息的最快方式,但会运行预先指定的次数。有人知道如何解决这个问题吗? - CJB
@bazz 可能需要提出自己的问题,但我的初步想法是,跳出 *apply 风格的命令(包括 replicate)不太符合 R 的风格。使用循环运行 replicate 的速度不会比使用循环慢多少。只需使用 whilerepeat,因为这正是它们设计的用例。 - Ari B. Friedman
@Ari 谢谢。实际上我确实问了这个问题。有些人给了我一些想法,但大多数人都说循环并不那么糟糕,就像你所说的那样。http://stackoverflow.com/questions/34220552/exit-a-function-within-apply - CJB
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接