Skip to content

calling an R-function from C

2 messages · Ralf Östermark, Duncan Murdoch

#
Hi,

I would like to invoke an R-function from a program written in ANSI C. 
Assume that I have written an R script "myRexample" and I want to invoke 
it from C. I assume that my R script loads its data from a datafile so 
no arguments need to be passed between my C program and R. Following 
R-exts.pdf  (section 4.7), I write the following main:

#include "my.h"                            /* includes all standard 
h-files */
#include <R.h>                            /* according to R-exts.pdf */
#include <Rinternals.h>
SEXP myRexample();
int main(int argc,char **argv) {
.External("myRexample");             /* invoking my R script */
exit(0);
}  /* end of main() */

Is this a correct interpretation, given that R is properly installed in 
the (unix) main frame?
I'm grateful for any advice on how to proceed.
regards
Ralf ?stermark
#
On Sat, 26 Feb 2005 21:45:36 +0200, Ralf ?stermark <rosterma@abo.fi>
wrote :
This is really more involved than you think.  Your program needs to
initialize the R environment, and be prepared to handle all sorts of
things (e.g. what if the R code wants to print something?)

The example you give won't work.  Section 4.7 of the 2.0.1 manual is
about C functions that are called from R.  Writing your own R
front-end is described in chapter 7 of that manual.
.External is an R function to call external code; it's not a C
function to call R code.
My advice would be to write your C code to be called from R; it's much
easier.

Duncan Murdoch