allocVector reference
Andrew,
On Mar 15, 2007, at 8:01 AM, Andrew Piskorski wrote:
On Wed, Mar 14, 2007 at 05:44:04PM -0000, Matthew Dowle wrote:
Hi, I'm trying to write a function to return an R vector which points directly to a contiguous subset of another vector, without taking a copy.
Matthew, I don't know the answer to your question, but this all seems related to support for references in R. I've included my notes on R references below. [...]
Since SEXPREC is a header followed by the data, rather than the header plus a pointer to the data, I'm not sure what I'm trying to do is possible. Is there a way of doing this? Similar in spirit to how the R assignment "x=y" does not copy y until x is modified,
Is you last statement above in fact true?
Yes. Just try a=1:100000000 gc() b=a gc() b[0]=0:0 gc()
I was under the impression that R does NOT do copy on write, that when you make a copy of a variable, R immediately allocates memory and makes a deep copy of the value.
Nope.
But you're using old deprecated "=" for assignment,
"old deprecated"? It was introduced in 1.4.0 and it is the most recently introduced assignment operator in R. I think that you are mistaking it for "_" which is no assignment operator anymore but used to be.
which is weird, so maybe you mean when you pass named arguments to a function? Function args are evaluated lazily, and I think that is used (I don't know how exactly) to give copy on write behavior - but only for function arguments.
Cheers, Simon