Returning Values from a Function
Often you want a function to return a single value (like a mean or a maximum), in which case you simply leave the last line of the function unassigned (i.e. there is no ‘gets arrow’ on the last line). Here is a function to return the median value of the parallel maxima (built-in function pmax) of two vectors supplied as arguments:
parmax<-function (a,b) { c<-pmax(a,b) median(c) }
Here is the function in action: the unassigned last line median(c) returns the answer
x<-c(1,9,2,8,3,7) y<-c(9,2,8,3,7,2) parmax(x,y) [1] 8
If you want to return two or more variables from a function you should use return with a list containing the variables to be returned. Suppose we wanted the median value of both the parallel maxima and the parallel minima to be returned:
parboth<-function (a,b) { c<-pmax(a,b) d<-pmin(a,b) answer<-list(median(c),median(d)) names(answer)[[1]]<-"median of the parallel maxima" names(answer)[[2]]<-"median of the parallel minima" return(answer) }
Here it is in action with the same x and y data as above:
parboth(x,y)
$"median of the parallel maxima"
[1] 8
$"median of the parallel minima"
[1] 2
The point is that you make the multiple returns into a list, then return the list. The provision of multi-argument returns (e.g. return(median(c),median(d)) in the example above) has been deprecated in R and a warning is given, as multi-argument returns were never documented in S, and whether or not the list was named differs from one version ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access