[R] efficient ways to dynamically grow a dataframe
Matteo Richiardi
matteo.richiardi at unito.it
Thu Dec 1 12:34:49 CET 2011
Hi,
I'm trying to write a small microsimulation in R: that is, I have a
dataframe with info on N individuals for the base-year and I have to
grow it dynamically for T periods:
df = data.frame(
id = 1:N,
x =....
)
The most straightforward way to solve the problem that came to my mind
is to create for every period a new dataframe:
for(t in 1:T){
for(i in 1:N){
row = data.frame(
id = i,
t = t,
x = ...
)
df = rbind(df,row)
}
}
This is very inefficient and my pc gets immediately stucked as N is
raised above some thousands.
As an alternative, I created an empty dataframe for all the projected
periods, and then filled it:
df1 = data.frame(
id = rep(1:N,T),
t = rep(1:T, each = N),
x = rep(NA,N*T)
)
for(t in 1:T){
for(i in 1:N){
x = ...
df1[df1$id==i & df1$t==t,"x"] = x
}
}
df = rbind(df,df1)
This is also too slow, and my PC gets stucked. I don't want to go for
a matrix, because I'd loose the column names and everything will
become too much error-prone.
Any suggestions on how to do it?
Thanks in advance,
Matteo
--
Matteo Richiardi
University of Turin
Faculty of Law
Department of Economics "Cognetti De Martiis"
via Po 53, 10124 Torino
Email: matteo.richiardi at unito.it
Tel. +39 011 670 3870
Web page: http://www.personalweb.unito.it/matteo.richiardi/
More information about the R-help
mailing list