[R] on "do.call" function
peter dalgaard
pdalgd at gmail.com
Mon Aug 8 19:04:58 CEST 2011
On Aug 8, 2011, at 17:16 , Kathie wrote:
> 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.
It has nothing to do with do.call, the problem is that your fc() function isn't vectorized.
Specifically:
> dpois(0, exp(rowSums(t(X[1,])*B[,1])))
[1] 0.1891356
> dpois(0, exp(rowSums(t(X[2,])*B[,1])))
[1] 0.1859965
> dpois(0, exp(rowSums(t(X[c(1,2),])*B[,c(1,1)])))
x
0.06598804 0.35684473
which in turn boils down to
> t(X[c(1,2),])*B[,c(1,1)]
[,1] [,2]
0.50 0.50
x 0.01 0.02
> t(X[1,])*B[,1]
x
[1,] 0.5 0.01
> t(X[2,])*B[,1]
x
[1,] 0.5 0.02
(You may be needing a drop=FALSE or two, but how am I to tell...)
>
> 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.
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
--
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