On Mon, Oct 4, 2010 at 10:44 AM, Gabriela Cendoya <gabrielacendoya.rl...@gmail.com> wrote: > You are missing "s" in your definitions so I can't reproduce your code.
When he uses apply(), he sets s = 1. > >> tmp <- data.frame(var1 = sample(c(0:10), 3, replace = TRUE), var2 = >> sample(c(0:10), 3, replace = TRUE), var3 = sample(c(0:10), 3, replace = >> TRUE)) >> >> str(tmp) > 'data.frame': 3 obs. of 3 variables: > $ var1: int 9 3 9 > $ var2: int 4 6 2 > $ var3: int 2 9 3 >> >> #I can run the following double loop and yield what I want in the end (rr1) >> as: >> >> library(statmod) >> Q <- 2 >> b <- runif(3) >> qq <- gauss.quad.prob(Q, dist = 'normal', mu = 0, sigma=1) >> rr1 <- matrix(0, nrow = Q, ncol = nrow(tmp)) >> L <- nrow(tmp) >> for(j in 1:Q){ > + for(i in 1:L){ > + rr1[j,i] <- exp(sum(log((exp(tmp[i,]*(qq$nodes[j]-b))) / > (factorial(tmp[i,]) * > + exp(exp(qq$nodes[j]-b)))))) * ((1/(s*sqrt(2*pi))) * > exp(-((qq$nodes[j]-0)^2/(2*s^2))))/dnorm(qq$nodes[j]) * qq$weights[j] > + } > + } > Error: objeto 's' no encontrado >> rr1 > [,1] [,2] [,3] > [1,] 0 0 0 > [2,] 0 0 0 >> > > Gabriela > > > 2010/10/4, Doran, Harold <hdo...@air.org>: >> Suppose I have the following data: >> >> tmp <- data.frame(var1 = sample(c(0:10), 3, replace = TRUE), var2 = >> sample(c(0:10), 3, replace = TRUE), var3 = sample(c(0:10), 3, replace = >> TRUE)) >> >> I can run the following double loop and yield what I want in the end (rr1) >> as: >> >> library(statmod) >> Q <- 2 >> b <- runif(3) >> qq <- gauss.quad.prob(Q, dist = 'normal', mu = 0, sigma=1) >> rr1 <- matrix(0, nrow = Q, ncol = nrow(tmp)) >> L <- nrow(tmp) >> for(j in 1:Q){ >> for(i in 1:L){ >> rr1[j,i] <- >> exp(sum(log((exp(tmp[i,]*(qq$nodes[j]-b))) / (factorial(tmp[i,]) * >> exp(exp(qq$nodes[j]-b)))))) * >> >> ((1/(s*sqrt(2*pi))) * exp(-((qq$nodes[j]-0)^2/(2*s^2))))/dnorm(qq$nodes[j]) >> * qq$weights[j] >> } >> } >> rr1 >> >> But, I think this is so inefficient for large Q and nrow(tmp). The function >> I am looping over is: >> >> fn <- function(x, nodes, weights, s, b) { >> exp(sum(log((exp(x*(nodes-b))) / (factorial(x) * >> exp(exp(nodes-b)))))) * >> ((1/(s*sqrt(2*pi))) * >> exp(-((nodes-0)^2/(2*s^2))))/dnorm(nodes) * weights >> } >> >> I've tried using apply in a few ways, but I can't replicate rr1 from the >> double loop. I can go through each value of Q one step at a time and get >> matching values in the rr1 table, but this would still require a loop and >> that I think can be avoided. >> >> apply(tmp, 1, fn, nodes = qq$nodes[1], weights = qq$weights[1], s = 1, b = >> b) >> >> Does anyone see an efficient way to compute rr1 without a loop? >> >> Harold >> >>> sessionInfo() >> R version 2.10.1 (2009-12-14) >> i386-pc-mingw32 >> >> locale: >> [1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United >> States.1252 LC_MONETARY=English_United States.1252 >> [4] LC_NUMERIC=C LC_TIME=English_United >> States.1252 >> >> attached base packages: >> [1] stats graphics grDevices utils datasets methods base >> >> other attached packages: >> [1] minqa_1.1.9 Rcpp_0.8.6 MiscPsycho_1.6 statmod_1.4.6 >> lattice_0.17-26 gdata_2.8.0 >> >> loaded via a namespace (and not attached): >> [1] grid_2.10.1 gtools_2.6.2 tools_2.10.1 >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> 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. >> > > > -- > _________________________ > Lic. María Gabriela Cendoya > Magíster en Biometría > Profesor Adjunto > Facultad de Ciencias Agrarias > UNMdP - Argentina > > ______________________________________________ > 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. > -- Joshua Wiley Ph.D. Student, Health Psychology University of California, Los Angeles http://www.joshuawiley.com/ ______________________________________________ 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.