Skip to content

question about "R get vector from C"

2 messages · Michael S, Uwe Ligges

#
Dear ALL-R helpers,

I want to let R get vector from c ,for example :numeric array ,vector .I saw 
some exmple like this :
/* useCall3.c                                    */
/* Getting an integer vector from C using .Call  */
#include <R.h>
#include <Rdefines.h>

SEXP setInt() {
   SEXP myint;
   int *p_myint;
   int len = 5;
   PROTECT(myint = NEW_INTEGER(len));  // Allocating storage space
   p_myint = INTEGER_POINTER(myint);
   p_myint[0] = 7;
   UNPROTECT(1);
   return myint;
}

then type at the command prompt:
R CMD SHLIB useCall3.c
to get useCall3.so
In windows platform ,how can I create right dll to let dyn.load use
and for .c ,.call ,external ,what are the differece? which one is better for 
  getting vector from C?

thanks in advance

Michael
#
Michael S wrote:
For the code above you certainly want to use .Call(), .C() and won't 
work with SEXP.
Under Windows, you can also say
   R CMD SHLIB useCall3.c
and get the corresponding useCall3.dll instead of useCall3.so. 
dyn.load() also works as expected, you just need the relevant tools / 
compiler installed.

Uwe Ligges