Dear R useRs,
i have the following code to compute values needed for a contour plot
############################################################
"myContour" <- function(a, b, plist, veca, vecb, dim)
{
tmpb <- seq(0.5 * b, 1.5 * b, length=dim)
tmpa <- seq(0.5 * a, 1.5 * a, length=dim)
z <- matrix(0, nrow=dim, ncol=dim)
for(i in 1:dim)
{
for(j in 1:dim)
{
z[i, j] <- posteriorPdf(a=tmpa[j], b=tmpb[i],
plist=plist, veca=veca, vecb=vecb)
}
}
}
"posteriorPdf" <- function(a, b, plist, veca, vecb)
{
res <- sum(plist[, 1] *
exp(vecb[, 1] * log(vecb[, 2]) + (vecb[, 1] - 1.0) * log(b)
- vecb[, 2] * b - lgamma(vecb[, 1])) *
exp(veca[, 1] * log(veca[, 2]) + (veca[, 1] - 1.0) * log(a)
- veca[, 2] * a - lgamma(veca[, 1])))
return(res)
}
plist <- matrix(0, 100, 3)
plist[, 1] <- runif(100)
veca <- vecb <- matrix(0, 100, 2)
veca[, 1] <- seq(20, 50, len=100)
veca[, 2] <- seq(10, 20, len=100)
vecb[, 1] <- seq(50, 200, len=100)
vecb[, 2] <- seq(1000, 400000, len=100)
myContour(a=20, b=0.01, plist=plist, veca=veca, vecb=vecb, dim=50)
############################################################
this is part of my other computations which i do with R. Here i recognized,
that my functions myContour and posteriorPdf took a long time of my
computations. The key to speed this up is to avoid the two for-loops in
myContour, i think. I tried a lot to do this with apply or something like that,
but i didn't get it.
If you have any advice how i can to this computations fast, i would be very
thankful, one idea is to use external c-code?
best regards
Andreas
--
______________________________________________
[email protected] 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.