[R] R: "in-place" appending to a matrix.

Gabor Grothendieck ggrothendieck at gmail.com
Thu Oct 16 01:48:13 CEST 2008


Create an empty matrix first and then fill it in.   That
will avoid the overhead in repeatedly expanding it.  If
you don't know how many rows then make it 1000 rows
and remove the unused ones once finished.

On Wed, Oct 15, 2008 at 4:05 PM, culpritNr1 <ig2ar-saf1 at yahoo.co.uk> wrote:
>
> Hello fellow R sufferers,
>
> Is there a way to perform an appending operation in place?
>
> Currently, the way my pseudo-code goes is like this
>
> for (i in 1:1000) {
>    if (some condition) {
>        newRow <- myFunction(myArguments)
>        X <- rbind(X, newRow)     #  <- this is the bottleneck!!
>    }
> }
>
> As you can see, it works but as the matrix X gets the size of a few million
> rows, the code runs very slow.
>
> I am looking for something like the natively "in place" appending python
> function called "append()" or the perl function "push". "In-place"
> operations would allow me to do (in pseudocode)
>
> for (i in 1:1000) {
>    if (some condition) {
>        newRow <- myFunction(myArguments)
>        append(X, newRow)
>    }
> }
>
> You see? I do not have to call and re-assign the giant X matrix every loop
> cycle.
>
> Any help?
>
> Thank you,
>
> Your culpritNr1
>
>
>
> --
> View this message in context: http://www.nabble.com/R%3A-%22in-place%22-appending-to-a-matrix.-tp20001258p20001258.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



More information about the R-help mailing list