I populated my object just using as.list(myDataFrame). My problem is that
after doing this, all assignments of the other slot (index) become very
slow.

Thank you for your reply.

André Rosi

2011/9/7 William Dunlap <wdunlap@tibco.com>

> You did not show the code you used to populate your
> object, but consider the following ways to make as.list(1:50000)
> via repeated assignments:
>
>  > system.time( { z0 <- list() ; for(i in 1:50000)z0[i] <- list(i) } )
>    user  system elapsed
>   13.34    0.00   13.42
>  > system.time( { z1 <- list() ; for(i in 1:50000)z1[[i]] <- i } )
>    user  system elapsed
>   12.98    0.00   13.36
>  > system.time( { z2 <- vector("list",50000) ; for(i in 1:50000)z2[i] <-
> list(i) } )
>    user  system elapsed
>    0.28    0.00    0.26
>  > system.time( { z3 <- vector("list",50000) ; for(i in 1:50000)z3[[i]] <-
> i } )
>    user  system elapsed
>    0.22    0.00    0.20
>  > identical(z0,z1) && identical(z0,z2) && identical(z0,z3)
>  [1] TRUE
>
> Preallocating a vector to its ultimate size can be much faster than
> repeatedly expanding it.
>
> Bill Dunlap
> Spotfire, TIBCO Software
> wdunlap tibco.com
>
> > -----Original Message-----
> > From: r-help-bounces@r-project.org [mailto:r-help-bounces@r-project.org]
> On Behalf Of André Rossi
> > Sent: Wednesday, September 07, 2011 3:08 PM
> > To: r-help@r-project.org
> > Subject: [R] Very slow assignments
> >
> > I'm creating an object of a S4 class that has two slots: ListExamples,
> which
> > is a list, and idx, which is an integer (as the code below).
> >
> > Then, I read a data.frame file with 10000 (ten thousands) of lines and 10
> > columns, do some pre-processing and, basically, I store each line as an
> > element of a list in the slot ListExamples of the S4 object. However, any
> > kind of assignment operation (<-) that I try to do after this took a
> > considerable time.
> >
> > Can anyone explain me why dois it happen? Is it possible to speed up an
> > script that deals with a big number of data (it might be data.frame or
> > list)?
> >
> > Thank you,
> >
> > André Rossi
> >
> > setClass("Buffer",
> >     representation=representation(
> >         Listexamples = "list",
> >         idx = "integer"
> >     )
> > )
> >
> >       [[alternative HTML version deleted]]
>

	[[alternative HTML version deleted]]

