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

Ross Ihaka ihaka at stat.auckland.ac.nz
Sat Jul 28 00:01:20 CEST 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 second of these looks a little odd to me.  In the first x, y, and z
are treated symmetrically while the second is asymmetric.

You might also consider whether you want to unpackage the x, y and z
values from the list at all.  If you are just using the returned values
you may as well refer to them as res$x, res$y and res$z.

	Ross
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
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