[R] syntax with do.call and `[`

peter dalgaard pdalgd at gmail.com
Wed Aug 3 16:24:26 CEST 2011


On Aug 3, 2011, at 12:30 , Jannis wrote:

> Dear List,
> 
> 
> 
> i would like to mimic the behaviour or the following indexing with a do.call construct to be able to supply the arguments to `[` as a list:
> 
> 
> test   = matrix[1:4,2]
> 
> result = test[2,]
> 
> 
> My try, however, did not work:
> 
> result = do.call(`[`,list(test,2,NULL))
> result = do.call(`[`,list(test,2,))
> result = do.call(`[`,list(test,2,''))
> 
> 
> How can I use the do.call in that way with leaving the second indexing vector blanc?
> 

alist() actually allows this, although probably more by coincidence than by design.

Watch:

> do.call(`[`, alist(test, 2, ))
[1] 2 4

If you want to turn this into a programming idiom, be aware that there are subtle differences because alist() does not evaluate its arguments. E.g., the two plots below are not quite the same.

> x <- 1:10
> y <- rnorm(10)
> do.call(plot, list(x, y))
> do.call(plot, alist(x, y))


-- 
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com
"Døden skal tape!" --- Nordahl Grieg



More information about the R-help mailing list