[R] assign variables to function output

MacQueen, Don macqueen1 at llnl.gov
Fri Apr 17 17:27:38 CEST 2015

I don't disagree with the other answers, but I'd like to talk about what I
see as a more underlying issue.

Generally speaking, functions return the value of the last expression
within them.

myfun <- function(x) {
  z <- sqrt(x)

 y <- myfun(7)
assigns 2 to y because 2 was the last expression in the function.

myfun <- function(z) {
 cat('inside myfun\n')
 y <- z-7
 x <- 2*z

  y <- myfun(c(1,4,9))

assigns c(1,2,3) to y because sqrt(z) was the last expression. x and y are
lost and gone forever.

Note that return() was not used, and does not need to be used.

Thus, if you want to return something that includes some of the variables
introduced inside the function, you gather them into a suitable structure
and make that the last expression in the function.

myfun <- function(z) {
  y <- z-7
  x <- 2*z
  list(x=x, y=y, rtz=sqrt(z))

Then y <- myfun(4) returns a list with three elements whose values are -3,
8, and 2.

Again no use of return(). There are cases where return() is useful, but it
is not needed in simple cases like these.
(and I can't imagine what's awkward about using return(value), but that's
another question)


Don MacQueen

Lawrence Livermore National Laboratory
7000 East Ave., L-627
Livermore, CA 94550

On 4/15/15, 3:17 PM, "merm" <pionescu at student.unimelb.edu.au> wrote:

>So I'm trying as the header suggests to assign the value(s) output by a
>function to a variable, say 'y'
>Problem is from what I gather any variables introduced within the function
>are contained and the only output I can get is "return(value)" which is
>awkward to work with. Any suggestions?
>View this message in context:
>Sent from the R help mailing list archive at Nabble.com.
>R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>PLEASE do read the posting guide
>and provide commented, minimal, self-contained, reproducible code.

More information about the R-help mailing list