[R] Help with integrating R and c/c++

Ravi Varadhan rvaradhan at jhmi.edu
Sun Feb 6 21:03:48 CET 2011


Hi Rohit,

It is fine if you are using the Newton's method just as an excuse to learn Rcpp.  If, however, your main goal is to develop a package to implement Newton's method, then you need to stop and look at the numerous optimization packages available in R.  A good place to start would be the "optimx" package, which unifies a large number of optimiaztion tools under one umbrella.

Hope this helps,
Ravi.

____________________________________________________________________

Ravi Varadhan, Ph.D.
Assistant Professor,
Division of Geriatric Medicine and Gerontology
School of Medicine
Johns Hopkins University

Ph. (410) 502-2619
email: rvaradhan at jhmi.edu


----- Original Message -----
From: Rohit Pandey <rohitpandey576 at gmail.com>
Date: Sunday, February 6, 2011 11:33 am
Subject: [R] Help with integrating R and c/c++
To: r-help at r-project.org


> Hi,
>  
>  I have been using R for close to two years now and have grown quite
>  comfortable with the language. I am presently trying to implement an
>  optimization routine in R (Newton Rhapson). I have some R functions that
>  calculate the gradient and hessian (pre requisite matrices) fairly
>  efficiently. Now, I have to call this function iteratively until some
>  convergance criterion is reached. I think the standard method of 
> doing this
>  in most programming languages is a while loop. However, I know R can 
> get
>  pretty slow when you use loops. In order to make this efficient, I 
> want to
>  transfer this part of my code to a more efficient programming 
> language like
>  c++ or c. However, I have been trying to learn this all day without any
>  luck. I found a package called Rcpp that makes this easier. However, 
> it
>  seems some functional knowledge of writing R packages is a pre 
> requisite. I
>  tried to follow the standard manual for doing this, but could not 
> find a
>  simple example to get me started. I know I am supposed to make a cpp 
> file
>  and put it some where before it can be called from R, but I'm 
> confused as to
>  how this can be done.
>  
>  My requirement is to start with a parameter vector, update it 
> according to
>  the gradient and hessian, check if the parameter satisfies some convergance
>  criterion and continue doing this until it does. Is there a way to
>  efficiently do this through an R function (replicate?). The problem 
> is that
>  the number of iterations is not fixed. If there is no function in R, 
> is
>  there a way I can quickly use Rcpp or some thing to have this last 
> part of
>  my code in a C or C++ program which repeatedly calls my R functions for
>  updating the parameters?
>  
>  -- 
>  Thanks in advance,
>  Rohit
>  Mob: 91 9819926213
>  
>  	[[alternative HTML version deleted]]
>  
>  ______________________________________________
>  R-help at r-project.org mailing list
>  
>  PLEASE do read the posting guide 
>  and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list