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. 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, but for a contiguous subset of y e.g. "x=y[5:9]" would become "x=vecref(y,5,5)".
SEXP vecref(SEXP v, SEXP offset, SEXP len) { // assuming v is an integer vector, offset>=0, len>=0 and (offset+len)<length(v) SEXP ans; PROTECT(ans = allocVector(INTSXP, 0)); DATAPTR(ans) = INTEGER(v) + INTEGER(offset)[0]; // this line doesn't work since DATAPTR is really an offset by the header LENGTH(ans) = INTEGER(len)[0]; UNPROTECT(1); return(ans); } Thanks in advance, Matthew ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel