[R] returning strings to R from C functions

Martin Maechler maechler at stat.math.ethz.ch
Thu Jun 3 09:11:36 CEST 2004

>>>>> "Fernando" == Fernando Pineda <fernando.pineda at jhu.edu>
>>>>>     on Wed, 2 Jun 2004 23:22:22 -0400 writes:

    Fernando> I'm using .C() and .External() and have no
    Fernando> problems sending integers, reals or strings from R
    Fernando> to C. Nor do I have problems sending integers or
    Fernando> reals back from C to R. But I'm pulling my hair
    Fernando> out trying to set a string value in a C function
    Fernando> and then sending it back from C to to R. I've
    Fernando> searched the usual sources and tried various
    Fernando> casts, macros and allocation schemes, but I'm
    Fernando> failing miserably. Could someone please put me out
    Fernando> of my misery and point me to a working example?

You did read the section entitled
     "Interface functions `.C' and `.Fortran'"
in the  "Writing R Extensions" manual ?

In particular,

>>    The following table gives the mapping between the modes of R vectors
>> and the types of arguments to a C function or FORTRAN subroutine.
>>      R storage mode     C type             FORTRAN type
>>      `logical'          `int *'            `INTEGER'
>>      `integer'          `int *'            `INTEGER'
>>      `double'           `double *'         `DOUBLE PRECISION'
>>      `complex'          `Rcomplex *'       `DOUBLE COMPLEX'
>>      `character'        `char **'          `CHARACTER*255'


One working example is the R function  formatC()
with the C code in <Rsource>/src/appl/strsignif.c

Martin Maechler

More information about the R-help mailing list