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.