[R] style question: returning multiple arguments - structure or list

Prof Brian D Ripley ripley at stats.ox.ac.uk
Sat Jul 28 08:59:16 CEST 2001


On Fri, 27 Jul 2001, Kevin Murphy wrote:

> I have a question about what is considered good style in R.
>
> I have a function  which returns several arguments, say [x,y,z]=f(),
> where sometimes I only care about the first few
> (so in Matlab, I can write e.g., [x,y] = f()).
>
> In R, there seem to be 2 ways to write this, both unsatisfying (to me):
>
> LIST
> f <- function() {
>   ...
>   list(x=x,y=y,z=z)
> }
> res <- f()
> x <- res$x; y <- res$y; z <- res$z
>
>
> STRUCTURE
> f <- function() {
>   ...
>   structure(x,y=y,z=z)
> }
> x <- f()
> y <- attr(x,"y"); z <- attr(x, "z")
>
> Which  is considered better style, or does it just depend on the
> problem?

The latter.  There's a third option, to create a new class and return an
object of that class, and write appropriate extractor functions.

If you look in the code base you will see many more uses of lists than
attributes, and heavy use of classes for returned lists.

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272860 (secr)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._



More information about the R-help mailing list