David Kreil <[EMAIL PROTECTED]> writes:

> Ok, how can I both allocate storage and specify column names in a data.frame 
> call, please? Apologies if I'm being slow here.

It gets a little tricky. I'd try something along the lines of

data.frame(age=as.numeric(NA),sex=factor(NA,levels=c("m","f")))[rep(1,20),]

or 

data.frame(age=0,sex=factor("m",levels=c("m","f")))[rep(NA,20),]

and of course the brute force way is

data.frame(age=rep(as.numeric(NA),20),
           sex=factor(rep(NA,20),levels=c("m","f"))
          )

Also, 

(a) there's no idea in ensuring that you're filling with NA if they
    are all going to be changed anyway, and
(b) recycling works so that you only need to specify the length of one
    variable, so 

data.frame(age=numeric(20), sex=factor("",levels=c("m","f")) )

works too.

Extending a data frame can be as simple as

mydata <- mydata[1:newlength,]
 
(plus fixup of row names later on).

> With many thanks again,
> 
> David.
> 
> > > Yes, once I've named the first column, I can add further ones by saying 
> > > d[c("x","y","z")]=NA or such. I was just wondering whether that was the way to 
> > > do it or whether there was a more elegant approach. Preallocation was the 
> > > critical clue I needed.
> > 
> > Use an initial data.frame call naming all the columns.


-- 
   O__  ---- Peter Dalgaard             Blegdamsvej 3  
  c/ /'_ --- Dept. of Biostatistics     2200 Cph. N   
 (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
~~~~~~~~~~ - ([EMAIL PROTECTED])             FAX: (+45) 35327907

______________________________________________
[EMAIL PROTECTED] mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help

Reply via email to