Splitting vector into individual elements
Slightly more transparent but arguably uglier:
> offred.rgb <- c(1, 0, 0) * 0.60
> ofr <- paste(offred.rgb, collapse=",")
> ofr. <- paste("rgb(", ofr, ',names="offred")')
> ofr.
[1] "rgb( 0.6,0,0 ,names=\"offred\")"
> eval(parse(text=ofr.))
offred
"#990000"
>
As long as I can remember "eval(parse(text=", this is for me the
most transparent and works for constructing virtually any R command.
hope this helps. spencer graves
Peter Dalgaard wrote:
Paul Roebuck <roebuck at odin.mdacc.tmc.edu> writes:
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?
Not really. You need an explicit expansion of the argument to a list somehow, and there's no silver bullet that can convert one function argument to several. There are solutions without do.call, like
offred.rgb <- c(1, 0, 0) * 0.60 x <- quote(rgb(.,.,.,names="offred")) x[2:4] <- as.list(offred.rgb) eval(x)
offred "#990000" but you might find it difficult to explain how it works a year later....
Spencer Graves, PhD, Senior Development Engineer O: (408)938-4420; mobile: (408)655-4567