[R] Only referenc copy when calling C routine?

Liaw, Andy andy_liaw at merck.com
Mon Apr 12 02:29:43 CEST 2004


I thought that description is rather clear.  If `x' is a vector of doubles,
then

result <- .C("myCfunc", x = x)

makes a copy of `x' to be passed to `myfunc'.  The copy in R is not touched.
When `myfunc' returns, another copy is made and placed into result[["x"]].

There's the `DUP' argument in .C/.Fortran that controls whether the copying
is done.  See ?.C for detail.

HTH,
Andy

> Shin, Daehyok
> 
> What happens when I pass an array to a dynamically linked C routine?
> Is only its reference copied when an array is passed and returned?
> Or, is its whole content copied?
> 
> In R extension manual, I found the following description.
> But, I can't know exactly which is true.
> 
> "There can be up to 65 further arguments giving R objects to 
> be passed to
> compiled code.
> Normally these are copied before being passed in, and copied 
> again to an R
> list object when
> the compiled code returns. If the arguments are given names, 
> these are used
> as names for
> the components in the returned list object (but not passed to 
> the compiled
> code)."
> 
> Thanks in advance.
> 
> Daehyok Shin
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! 
> http://www.R-project.org/posting-guide.html
> 
>




More information about the R-help mailing list