Skip to content

Could I use R function lm or nlm in C code?

3 messages · Shuguang Sun, Gabor Grothendieck, Dirk Eddelbuettel

#
Dear R,

I'm doing some simulation work and it takes me a lot of time to do it
in R. So I try to implement it in C code, but I want to use some R
functions directly for my lazy and the robustness of code. For
example, I will use lm and nlm in my program. How could I use R's lm
and nlm function directly? I thinks these functions are not included
in the R's include directory. Do I need to get full R's source first?
If I have get all R's source, is it enough that I only include the
source file for function lm or nlm?

system:
Windows XP
R 2.13.0
Rtools 2.13


Thanks for your advice.
Shuguang Sun
Fudan University
#
On Sat, Apr 23, 2011 at 6:25 AM, Shuguang Sun <shuguang at gmail.com> wrote:
Before moving to C, try replacing lm with the faster lm.fit (see
?lm.fit) and see if that gives you sufficient speedup for your needs.
#
On 23 April 2011 at 18:25, Shuguang Sun wrote:
| I'm doing some simulation work and it takes me a lot of time to do it
| in R. So I try to implement it in C code, but I want to use some R
| functions directly for my lazy and the robustness of code. For
| example, I will use lm and nlm in my program. How could I use R's lm
| and nlm function directly? I thinks these functions are not included
| in the R's include directory. Do I need to get full R's source first?
| If I have get all R's source, is it enough that I only include the
| source file for function lm or nlm?

The CRAN packages RcppArmadillo and RcppGSL both implement a function
fastLM() that does just that: faster linear model fits.

Two caveats, though.

First, these functions are provided to illustrate how to do something like
this more easily in C/C++ from R thanks to Rcpp and Rcpp extensions. But as
Doug Bates will remind you, one should not necessarily do linear model fits
this way R does internally is different, and more robust in corner cases.
See help(fastLM) in RcppArmadillo for a worked example.

Second, as Gabor said, there are also easier way to get faster lm fits so
make sure you have those options exhausted.

Dirk