Paul Roebuck <roebuck <at> odin.mdacc.tmc.edu> writes: : : On Wed, 15 Sep 2004, Peter Dalgaard wrote: : : > Paul Roebuck <roebuck <at> odin.mdacc.tmc.edu> writes: : > : > > Is there a means to split a vector into its individual : > > elements without going the brute-force route for arguments : > > to a predefined function call? : > > : > > offred.rgb <- c(1, 0, 0) * 0.60; : > > : > > ## Brute force style : > > offred.col <- rgb(offred.rgb[1], : > > offred.rgb[2], : > > offred.rgb[3], : > > names = "offred") : > > ## Desired style : > > offred.col <- rgb(silver.bullet(offred.rgb), : > > names = "offred") : > : > The closest is probably this: : > : > offred.col <- do.call("rgb", c(as.list(offred.rgb), : > list(names="offred"))) : > : : Everyone offered 'do.call' as the solution. While that : works, is it to say that there is no means of expanding : the expression as an argument to the original function?
This is not a true answer to the question of expanding a list into arguments without using do.call but it does allow you to carry out either syntax in this particular case using S3 dispatch: R> silver.bullet <- as.list R> rgb <- function(x, ...) UseMethod("rgb") R> rgb.list <- function(x, ...) rgb(x[[1]],x[[2]],x[[3]],...) R> rgb.default <- graphics::rgb R> offred.rgb <- c(1, 0, 0) * 0.60; R> # original syntax R> rgb(offred.rgb[1], offred.rgb[2], offred.rgb[3], names = "offred") offred "#990000" R> # list syntax R> rgb(silver.bullet(offred.rgb), names = "offred") offred "#990000" ______________________________________________ [EMAIL PROTECTED] mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html