[Rd] Shrinking a List

From: Saptarshi Guha <saptarshi.guha_at_gmail.com>
Date: Wed, 10 Mar 2010 23:53:32 -0500

I create a VECSXP(call it A) with size N(~ 5000), i then proceed to fill the elements and find out I don't need to fill more than M (M<< N).
Thus if i return A to the user's R code, he/she will see a list of length 5K of which N-M are NULLs.

To avoid this, I create a new VECSXP B of length M and /duplicate/ the elements of A.

Since I do this often, it appears to be wasteful, so can I

  1. is there a resize function for a VECSXP?

if not

b) can i just do something like

 SET_VECTOR_ELT(B,i, VECTOR_ELT(A,i)) instead of wrapping VECTOR_ELT(A,i) inside a call to Rf_duplicate (i will be UNPROTECTING A and B, though I will return B)

I suppose I can do (b), since B (since it is being returned) is automatically protected and therefore all its elements will also be protected, correct?

Thank you

R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Thu 11 Mar 2010 - 04:57:21 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Thu 11 Mar 2010 - 09:01:02 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.

list of date sections of archive