[Rd] R vs. C
dnadavewa at yahoo.com
Mon Jan 17 19:57:32 CET 2011
I think we're also forgetting something, namely testing. If you write your
routine in C, you have placed additional burden upon yourself to test your C
code through unit tests, etc. If you write your code in R, you still need the
unit tests, but you can rely on the well tested nature of R to allow you to
reduce the number of tests of your algorithm. I routinely tell people at Sage
Bionetworks where I am working now that your new C code needs to experience at
least one order of magnitude increase in performance to warrant the effort of
moving from R to C.
But, then again, I am working with scientists who are not primarily, or even
----- Original Message ----
From: Dirk Eddelbuettel <edd at debian.org>
To: Patrick Leyshock <ngkbr8es at gmail.com>
Cc: r-devel at r-project.org
Sent: Mon, January 17, 2011 10:13:36 AM
Subject: Re: [Rd] R vs. C
On 17 January 2011 at 09:13, Patrick Leyshock wrote:
| A question, please about development of R packages:
| Are there any guidelines or best practices for deciding when and why to
| implement an operation in R, vs. implementing it in C? The "Writing R
| Extensions" recommends "working in interpreted R code . . . this is normally
| the best option." But we do write C-functions and access them in R - the
| question is, when/why is this justified, and when/why is it NOT justified?
| While I have identified helpful documents on R coding standards, I have not
| seen notes/discussions on when/why to implement in R, vs. when to implement
| in C.
The (still fairly recent) book 'Software for Data Analysis: Programming with
R' by John Chambers (Springer, 2008) has a lot to say about this. John also
gave a talk in November which stressed 'multilanguage' approaches; see e.g.
In short, it all depends, and it is unlikely that you will get a coherent
answer that is valid for all circumstances. We all love R for how expressive
and powerful it is, yet there are times when something else is called for.
Exactly when that time is depends on a great many things and you have not
mentioned a single metric in your question. So I'd start with John's book.
Hope this helps, Dirk
Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com
R-devel at r-project.org mailing list
More information about the R-devel