From murdoch.duncan at gmail.com  Sat Feb 23 10:09:14 2013
From: murdoch.duncan at gmail.com (Duncan Murdoch)
Date: Sat, 23 Feb 2013 04:09:14 -0500
Subject: [Rd] Registering native routines
In-Reply-To: <5127CE36.6070109@mayo.edu>
References: <5127CE36.6070109@mayo.edu>
Message-ID: <5128873A.1030603@gmail.com>

On 13-02-22 2:59 PM, Terry Therneau wrote:
> I'm working on registering all the routines in the survival package, per a request from
> R-core.  Two questions:
>
> 1. In the coxph routine I have this type of structure:
>        if (survival has 2 columns) routines <- c("coxfit5_a", "coxfit5_b", "coxfit5_c")
>           else                     routines <- c("agfit5_a",  "agfit5_b",  "agfit5_c")
>
> .....
>
>       .C(routines[1], arg1, etc
>
> I tried replacing "routines" with a vector of native symbol references, but it doesn't work
>
> Error in .C(routines[1], as.integer(n), as.integer(nvar), as.double(y),  :
>     first argument must be a string (of length 1) or native symbol reference

I imagine routines is a list in this case, so you should be using 
routines[[1]] to extract the element, rather than subsetting the list.

Duncan Murdoch

>
> I had fixed up all the other .C and .Call statements first (28 of them) and that worked,
> so the problem is not with finding the set of symbol references.
>
> 2. In the R-exts manual it mentions another argument "style" for C calls to specify if an
> argument is for input, output, or both.  However, I can find no details on how to use it.
>
> 3. A few of my routines still had a COPY argument.  I assume that is simply ignored?
>
> Terry T.
>
> R Under development (unstable) (2013-02-11 r61902)
> Platform: i686-pc-linux-gnu (32-bit)
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>



[Rd] Registering native routines
Duncan Murdoch