On Nov 1, 2011, at 4:29 PM, Steven Dirkse wrote: > Hello, > > I have some C code (for a shared lib called via .External) that uses > > PROTECT(w= allocMatrix(REALSXP, m, n)); > > mostly successfully. In rare cases, though, the row count m will be > an overestimate. Is there a way to reallocate the matrix in-place, > something like > > reAllocMatrix (w,m-excess,n) /* where excess is > 0 */ > > to chop off the last excess rows of w? I only find out about the > excess rows during the single pass over the data made to copy it from > its source to w. > > Short of this, all I know to do is allocate a matrix of the proper > size and copy the values. Any other ways to do this? >
No. In theory you could use SETLENGTH, and then adjust the dimensions, but since you are talking about rows you'll need to re-arrange the whole matrix anyway so you would a) waste memory in the result and b) still need to essentially copy in place in an additional pass. Cheers, Simon ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel