[R] on "do.call" function

Kathie kathryn.lord2000 at gmail.com
Mon Aug 8 17:16:08 CEST 2011


Dear all,

Even though one of R users answered my question, I cannot understand, so I
re-ask this question.

I am trying to use "do.call", but I don't think I totally understand this
function.

Here is an simple example.

--------------------------------------------

> B <- matrix(c(.5,.1,.2,.3),2,2)
> B
     [,1] [,2]
[1,]  0.5  0.2
[2,]  0.1  0.3
> x <- c(.1,.2)
> X <- cbind(1,x)
> X
         x
[1,] 1 0.1
[2,] 1 0.2
>
> lt <- expand.grid(i=seq(1,2), y0=seq(0,2))
> lt
  i y0
1 1  0
2 2  0
3 1  1
4 2  1
5 1  2
6 2  2
>
> fc <- function(y0,i) dpois(y0, exp(rowSums(t(X[i,])*B[,1])))
>
> do.call(fc,lt)
[1] 1.892179e-09 3.348160e-01 3.800543e-08 3.663470e-01 3.816797e-07
2.004237e-01

--------------------------------------------

Unfortunately, what I want to get is

dpois(0, exp(rowSums(t(X[1,])*B[,1]))) = 0.1891356
dpois(0, exp(rowSums(t(X[2,])*B[,1]))) = 0.1859965
dpois(1, exp(rowSums(t(X[1,])*B[,1]))) = 0.3149658
dpois(1, exp(rowSums(t(X[2,])*B[,1]))) = 0.3128512
dpois(2, exp(rowSums(t(X[1,])*B[,1]))) = 0.2622549
dpois(2, exp(rowSums(t(X[2,])*B[,1]))) = 0.2631122

--------------------------------------------

Would you plz tell me why these two results are different?? and how do I get
what I want to using "do.call" function??


Regards,

Kathryn Lord 

--
View this message in context: http://r.789695.n4.nabble.com/on-do-call-function-tp3727262p3727262.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list