On Aug 8, 2011, at 11:16 AM, 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.

Why are you trying to use do.call? It operates on a sequence of lists which would be dataframe columns. while it appears you want to operate on a row-by-row basis. You probably want apply rather than do.call (as you were already told.).

?apply

(You will need to modify the fc() function to take row arguments by either their position of by named index.)

--
David.

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??

--

David Winsemius, MD
West Hartford, CT

______________________________________________
R-help@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.

Reply via email to