R from C — Simplest Possible Helloworld

后端 未结 4 1892
甜味超标
甜味超标 2020-11-30 00:47

What is the simplest possible C function for starting the R interpreter, passing in a small expression (eg, 2+2), and getting out the result? I\'m trying to compile with Mi

4条回答
  •  野性不改
    2020-11-30 01:29

    You want to call R from C?

    Look at section 8.1 in the Writing R Extensions manual. You should also look into the "tests" directory (download the source package extract it and you'll have the tests directory). A similar question was previously asked on R-Help and here was the example:

    #include  
    #include  
    
    SEXP hello() { 
      return mkString("Hello, world!\n"); 
    } 
    
    int main(int argc, char **argv) { 
      SEXP x; 
      Rf_initEmbeddedR(argc, argv); 
      x = hello(); 
      return x == NULL;             /* i.e. 0 on success */ 
    } 
    

    The simple example from the R manual is like so:

     #include 
    
     int main(int ac, char **av)
     {
         /* do some setup */
         Rf_initEmbeddedR(argc, argv);
         /* do some more setup */
    
         /* submit some code to R, which is done interactively via
             run_Rmainloop();
    
             A possible substitute for a pseudo-console is
    
             R_ReplDLLinit();
             while(R_ReplDLLdo1() > 0) {
               add user actions here if desired
             }
          */
         Rf_endEmbeddedR(0);
         /* final tidying up after R is shutdown */
         return 0;
     }
    

    Incidentally, you might want to consider using Rinside instead: Dirk provides a nice "hello world" example on the project homepage.

    In you're interested in calling C from R, here's my original answer:

    This isn't exactly "hello world", but here are some good resources:

    • Jay Emerson recently gave a talk on R package development at the New York useR group, and he provided some very nice examples of using C from within R. Have a look at the paper from this discussion on his website, starting on page 9. All the related source code is here: http://www.stat.yale.edu/~jay/Rmeetup/MyToolkitWithC/.
    • The course taught at Harvard by Gopi Goswami in 2005: C-C++-R (in Statistics). This includes extensive examples and source code.

提交回复
热议问题