[R] Returning a dataframe from a C function (How) ?
Thomas Lumley
tlumley at u.washington.edu
Thu May 2 18:32:32 CEST 2002
On Thu, 2 May 2002, Neil Osborne wrote:
> I'm writing an R extension. The language I'm using is ANSI C. One of the
> functions I'm writing will accept a string and return a dataset as a
> dataframe. i.e the prototype will be of the form:
>
> dataframe foo(R_String)
> {
> }
>
>
> Does anyone have any skeleton code for such a function, i.e. one that
> receives an R "string" and returns a dataset as a dataframe ?
>
> The main concerns I have are:
>
> 1. Handling the "R_String" in C (i.e. converting it into a char*)
> 2. Creating an R dataframe in C
>
You could look at the code in foreign, which takes file names and returns
data frames.
For example,
foreign/src/stataread.c:do_readStata
has
fp = fopen(R_ExpandFileName(CHAR(STRING_ELT(fname,0))), "rb");
showing the use of CHAR(STRING_ELT(fname,0)) to extract a char * from an R
string.
and foreign/src/stataread.c:R_LoadStataData creates a data frame and
passes it back to R
foreign/src/SASxport.c: xport_read is shorter and may be easier to read.
It actually returns a list, which is coerced to a dataframe in interpreted
code.
-thomas
Thomas Lumley Asst. Professor, Biostatistics
tlumley at u.washington.edu University of Washington, Seattle
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
More information about the R-help
mailing list