On Tue, Feb 14, 2012 at 2:31 PM, William Dunlap <wdunlap@tibco.com> wrote:

> If you must repeatedly append rows to a data.frame,
> try making the dataset you are filling in a bunch
> of independent vectors, perhaps in a new environment
> to keep things organized.


One complication is I don't know the names of the columns I'm assigning to
before I read them off the file. And crazily, if I change this:
       data$x[i] <- i + 0.1

where data is an environment and x a primitive vector, to use a computed
name instead:

 data[[colname]][i] <- i + 0.1

Then I get back to way-superlinear performance. Eventually I found I could
work around it like:

eval(substitute(var[ix] <- data,
                          list(var=as.name(colname), ix=i, data = i+0.1)),
               envir = data)

but... as workarounds go that seems to be on the crazy nuts end of the
scale. Why does [[]] impose a performance penalty?

Peter

	[[alternative HTML version deleted]]

