On 11/1/2006 7:48 AM, Sean Davis wrote:> I have a pretty simple question. I have an array of REALSXP allocated as:
>
> rsp = allocVector(REALSXP,n)
>
> and I simply want to pass subsets of rsp of size q (q<<n), for
example, to an
> R function in C. Is there a way to subset rsp without creating a new
REALSXP
> vector and copying the values for subsetting into it and then passing it to
> the function? I'm looking for the R equivalent of rsp[1:q], but in C
under
> the R API.
>
> A pointer to source code in the R distribution would be quite helpful, as I
> haven't found one on my own (at least not one that I recognized as
such).
No, there's no way to do that. R functions can assume they have unique
access to the objects they work on. (There are some optimizations which
mean they sometimes avoid making copies, but the semantics are such that
they should be able to act as though they have their own copies. There
are a couple of exotic exceptions to this rule, but it applies to
numeric vectors.)
Duncan Murdoch