[R] problem with do.call
Douglas Bates
bates at stat.wisc.edu
Thu Apr 11 17:27:22 CEST 2002
Ernesto Jardim <ernesto at ipimar.pt> writes:
> Hi
>
> This was not my understanding. I thougth that if you can use functions
> like apply and similar instead of for loops your code will be faster.
> Basicly relying on these functions code which is (should be) optimized
> for speed.
>
> If what you're saying is true then using functions like apply is a
> matter of simplicity and not speeding up the code.
>
> Is this correct ?
Yes.
If you examine the apply function you will see that the bulk of the
work is done in a loop
if (length(d.call) < 2) {
if (length(dn.call))
dimnames(newX) <- c(dn.call, list(NULL))
for (i in 1:d2) ans[[i]] <- FUN(newX[, i], ...)
}
else for (i in 1:d2) ans[[i]] <- FUN(array(newX[, i], d.call,
dn.call), ...)
In their book "S Programming" (Springer, 2000) Venables and Ripley
discuss general strategies for writing R functions and for making them
faster. One general principle is to profile the code before
implementing changes. The manual "Writing R Extensions" has a section
on "Profiling R code" which is highly recommended.
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
More information about the R-help
mailing list