[Rd] R vs. C

David Henderson 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 
secondarily, coders...

Dave H

----- 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 mailing list