[R] stop()

Dimitris Rizopoulos
Tue, 11 Oct 2011 17:43:08 -0000

You could use return(), e.g.,

myFun <- function (x, max.iter = 5) {
     for (i in 1:10) {
         result <- x + i
         iter <- i
         if (iter == max.iter) {
             return(result)
         }
     }
     result
}

myFun(10, max.iter = 4)


I hope it helps.

Best,
Dimitris


On 10/11/2011 7:31 PM, Doran, Harold wrote:
> Suppose I have a function, such as the toy example below:
>
> myFun<- function(x, max.iter = 5) {
>                 for(i in 1:10){
>                 result<- x + i
>                 iter<- i
>                 if(iter == max.iter) stop('Max reached')
>                 }
>                 result
>                 }
>
> I can of course do this:
> myFun(10, max.iter = 11)
>
> However, if I reach the maximum number of iterations before my
"algorithm" has finished (in my real application there are EM steps
for a mixed model), I actually want the function to return the value of
"result" up to that point. Currently using stop(), I would get
>
>> myFun(10, max.iter = 4)
> Error in myFun(10, max.iter = 4) : Max reached
>
> But, in this toy case the function should return the value of
"result" up to iteration 4.
>
> Not sure how I can adjust this.
>
> Thanks,
> Harold
>
>
>
> 	[[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>

--
Dimitris Rizopoulos
Assistant Professor
Department of Biostatistics
Erasmus University Medical Center

Address: PO Box 2040, 3000 CA Rotterdam, the Netherlands
Tel: +31/(0)10/7043478
Fax: +31/(0)10/7043014
Web: http://www.erasmusmc.nl/biostatistiek/