On Mon, 17 Jun 2019, Simon Urbanek wrote:
> Matrix is just a vector with the dim attribute. Assuming it is not
referenced by anyone, you can set any values to the dim attribute. As for the
vector, you can use SET_LENGTH() to shorten it - but I'm not sure how
official it is - it was originally designed to work, but there were abuses of
TRUELENGTH so not sure where we stand now (shortened vectors used to fool the
garbage collector as far as object sizes go). I wouldn't do it unless
you're dealing with rally huge matrices.
Don't do that. SET_LENGTH isn't part of the API and using it outside
specific internal code confuses the garbage collector.
There is support for a growable vector but it's not a at a point where
the interface is stable enough to be used in packages. So again please
don't go there.
Also for a matrix unless you are just dropping trailing columns you
would have to move data in memory.
Best,
luke
>
> Cheers,
> Simon
>
>
>> On Jun 14, 2019, at 5:31 PM, Morgan Morgan <morgan.emailbox at
gmail.com> wrote:
>>
>> Hi,
>>
>> Is there a way to resize a matrix defined as follows:
>>
>> SEXP a = PROTECT(allocMatrix(INTSXP, 10, 2));
>> int *pa = INTEGER(a)
>>
>> To row = 5 and col = 1 or do I have to allocate a second matrix
"b" with
>> pointer *pb and do a "for" loop to transfer the value of a to
b?
>>
>> Thank you
>> Best regards
>> Morgan
>>
>> [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-devel at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
--
Luke Tierney
Ralph E. Wareham Professor of Mathematical Sciences
University of Iowa Phone: 319-335-3386
Department of Statistics and Fax: 319-335-3017
Actuarial Science
241 Schaeffer Hall email: luke-tierney at uiowa.edu
Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu