On Jul 22, 2011, at 9:26 AM, Alireza Mahani wrote: > I am developing an R package for internal use, and eventually for public > release. My understanding is that there is no easy way to avoid copying > function arguments in R (i.e. we don't have the concept of pointers in R), > which makes me wary of freely creating chains of function calls since each > function call implies data copy overhead. > > Is the above assessment fair?
No. Although R maintains the illusion of pass-by-value, it does to considerable length to prevent copying if not needed: > r=rnorm(1e6) > tracemem(r) [1] "<0x103fa2000>" > f = function(x) x > invisible(f(f(f(f(f(f(r))))))) As you see not a single copy is created even though there are 6 function calls. As Spencer said, you should not worry unless you see a sign of a problem. Cheers, Simon > Are there any good write-ups on best practices > for writing efficient R libraries that take into consideration the > above-mentioned limitations, and any others that might exist? > > Thank you, > Alireza > > > -- > View this message in context: > http://r.789695.n4.nabble.com/Best-practices-for-writing-R-functions-tp3686674p3686674.html > Sent from the R devel mailing list archive at Nabble.com. > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > > ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel