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@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/

______________________________________________
R-help@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.

Reply via email to