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? All help is greatly appreciated. Best, Esther
Patrick Connolly
2011-May-04 10:12 UTC
[R] adding columns to dataframes contained in a list
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 ~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.