It seems that 'return' is not necessary when returning a value. If this is the case, I don't understand why 'return' is a keyword in R. Is there a case in which I have to use 'return'?> f<-function(x) {+ x + }> g<-function(x) {+ return(x) + }> print(f(2))[1] 2> print(g(2))[1] 2>
Did you read the help? If you use return(), that value is returned regardless of where in the function it appears. This can be used in conditionals, for example. If the function never hits a return value, the value of the last evaluated expression is returned. testfunction <- function(x, controlvar="a") { if(controlvar != "a") { return(x^2) } x + 1 }> testfunction(4, "a")[1] 5> testfunction(4, "b")[1] 16 Sarah On Tue, Oct 27, 2009 at 10:12 AM, Peng Yu <pengyu.ut at gmail.com> wrote:> It seems that 'return' is not necessary when returning a value. If > this is the case, I don't understand why 'return' is a keyword in R. > Is there a case in which I have to use 'return'? > >> f<-function(x) { > + ? x > + } >> g<-function(x) { > + ? return(x) > + } >> print(f(2)) > [1] 2 >> print(g(2)) > [1] 2 >>-- Sarah Goslee http://www.functionaldiversity.org
On 10/27/2009 10:12 AM, Peng Yu wrote:> It seems that 'return' is not necessary when returning a value. If > this is the case, I don't understand why 'return' is a keyword in R. > Is there a case in which I have to use 'return'?If you want to return early from a function you need it, e.g. f <- function(x) { if (x < 10) return(x^2) x <- x + 1 x } Often these can be rewritten without the explicit return(), but they can be less clear. For example, the above is equivalent to f <- function(x) { if (x < 10) x^2 else { x <- x + 1 x } } but here it is not obvious that the x^2 is really the value of the last statement in the function. Duncan Murdoch> >> f<-function(x) { > + x > + } >> g<-function(x) { > + return(x) > + } >> print(f(2)) > [1] 2 >> print(g(2)) > [1] 2 >> > > ______________________________________________ > 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.