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

Reply via email to