[R] Using R as Shared Library

Dirk Eddelbuettel edd at debian.org
Sun Aug 12 17:38:56 CEST 2012


On 12 August 2012 at 07:56, Michael Weylandt wrote:
| On Aug 12, 2012, at 6:09 AM, Thorsten Jolitz <tjolitz at googlemail.com> wrote:
| > Thorsten Jolitz <tjolitz at googlemail.com> writes:
| > Let me reformulate my question (since I managed to make 'native' calls
| > to C functions in libR by now): 
| > I still wonder whats 'in there' in libR - only the core C functions, or
| > all the functions written in R itself too? And what packages are included?
| 
| Just C functions.  

Moreover, many of these are marked 'non visible' and cannot be accessed.  You
probably want to consider

  a) the standalone R math library, available eg on Debian/Ubuntu as package
     r-mathlib which gets you a subset of R (distribution functions, random
     numbers, ...) for use in other programs, or

  b) the embedding API of R

Both of these are documented in the 'Writing R Extension' manual that came
with R. 

If you are interested in b), you may also want to look at the RInside project
which makes embedding a lot easier.  The simplest example is just 

    #include <RInside.h>                    // for the embedded R via RInside
    int main(int argc, char *argv[]) {
        RInside R(argc, argv);              // create an embedded R instance 
        R["txt"] = "Hello, world!\n";	    // assign a char* (string) to 'txt'
        R.parseEvalQ("cat(txt)");           // eval the init string, ignoring any returns
        exit(0);
    }

which passes a string to the embedded R interpreter and calls an R function
to display it. You can send full R objects back and forth thanks to Rcpp, and
there are over a dozen examples included in the packages, as well as more
advanced use of embedded R within the context of MPI (for parallel
computing), Qt (for GUIs and much more) or Wt (for web applications).

Cheers, Dirk

-- 
Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com



More information about the R-help mailing list