[R] How does do.call() work??

Gustaf Rydevik gustaf.rydevik at gmail.com
Fri Jan 25 12:24:54 CET 2008


On Jan 25, 2008 11:27 AM, Sergey Goriatchev <sergeyg at gmail.com> 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?
>
> 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. "
>
> Thanks for help!
> Sergey
>

Try
cbind(L[[1]],L[[2]],L[[3]])
,which is equal to do.call(cbind,L).
do.call takes a list of arguments, and feed each element of that list
to the function.
cbind takes two or more matrices, not a list of matrices as arguments.

/Gustaf

-- 
Gustaf Rydevik, M.Sci.
tel: +46(0)703 051 451
address:Essingetorget 40,112 66 Stockholm, SE
skype:gustaf_rydevik



More information about the R-help mailing list