[R] Splitting vector into individual elements

Spencer Graves spencer.graves at pdf.com
Thu Sep 16 00:05:59 CEST 2004


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




More information about the R-help mailing list