[R] How does do.call() work??
Duncan Murdoch
murdoch at stats.uwo.ca
Fri Jan 25 12:32:08 CET 2008
Sergey Goriatchev wrote:
> Dear members of R forum,
>
> Say I have a list:
>
> L <- list(1:3, 1:3, 1:3)
>
> that I want to turn into a matrix.
>
> I wonder why if I do:
>
> do.call(cbind, L)
>
> I get the matrix I want, but if I do
>
> cbind(L)
>
> I get something different from what I want. Why is that? How does
> do.call() actually work?
>
The second argument to do.call is "args", a list of arguments to pass to
the function (cbind in your case). The function doesn't know what to do
when you pass it a list, it's expecting separate vectors/matrices.
In your example, do.call(cbind, L) is equivalent to
cbind(L[[1]], L[[2]], L[[3]])
> I've read in do.call() help file this sentence: "The behavior of some
> functions, such as "substitute", will not be the same for functions
> evaluated using do.call as if they were evaluated from the
> interpreter. The precise semantics are currently undefined and subject
> to change. "
>
substitute() does strange things; cbind uses standard rules, so this
isn't a problem for it.
Duncan Murdoch
> Thanks for help!
> Sergey
>
>
More information about the R-help
mailing list