[R] adding columns to dataframes contained in a list

Patrick Connolly
Wed, 04 May 2011 10:12:36 -0000

On Wed, 04-May-2011 at 10:25AM +0300, E Hofstadler wrote:

|> hi there,
|>
|> I have a list of 5 identical dataframes:
|>
|> mydf <- data.frame(x=c(1:5), y=c(21:25))
|> mylist <- rep(list(mydf),5)
|>
|> and a factor variable with 5 levels:
|>
|> foo <- c(letters[1:5])
|> foo <- as.factor(foo)
|>
|>
|> Question:
|> I'd like to add a new variable to each dataframe in the list, each
|> containing only one level of the factor variable. So mylist[[1]]
|> should have a new variable z containing only "a", in mylist[[2]]
the
|> new variable z should contain only "b", etc.
|>
|> (How) can this be done without looping?

This will work:

zz <- do.call("rbind", mylist)
zz$z <- rep(foo, each = 5)
split(zz, zz$z)

You might want to rename of the list elements if those are
inconvenient.


HTH

|>
|> All help is greatly appreciated.
|>
|> Best,
|> Esther
|>
|> ______________________________________________
|> 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.

--
~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.
   ___    Patrick Connolly
 {~._.~}                   Great minds discuss ideas
 _( Y )_  	         Average minds discuss events
(:_~*~_:)                  Small minds discuss people
 (_)-(_)  	                      ..... Eleanor Roosevelt

~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.