[R] Create New Column Inside Data Frame for Many Data Frames

Jeff Newmiller jdnewmil at dcn.davis.CA.us
Sun Apr 14 19:53:45 CEST 2013


I suggest you read the section on indexing in the Introduction to R document that comes with R. In particular, look at the [[i]] notation. This comes in handy in a couple of ways.

First, you shouldn't be working with "many" data frames at once that are stored as separately-named objects. If you plan to do similar things to them, then you should store them in a list:

myframes <- list()
myframes[["A"]] <- data.frame(population=c(100, 300, 5000, 2000, 900, 2500))

Secondly, you can programmatically access the columns in a data frame if needed:

i <- "A"
dest <- "Rate"

myframes[[i]][[dest]]<-ROC(myframes[[i]][["population"]])

Study up on indexing in R... much of the power of this language lies there.

---------------------------------------------------------------------------
Jeff Newmiller                        The     .....       .....  Go Live...
DCN:<jdnewmil at dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live Go...
                                      Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
/Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k
--------------------------------------------------------------------------- 
Sent from my phone. Please excuse my brevity.

"Sparks, John James" <jspark4 at uic.edu> wrote:

>Dear R Helpers,
>
>I have a large number of data frames and I need to create a new column
>inside each data frame.  Because there is a large number, I need to
>"loop"
>through this, but I don't know the syntax of assigning a new column
>name
>dynamically.
>
>Below is a simple example of what I need to do.  Assume that I have to
>do
>this for all 26 letters and you should see the form of the problem.
>
>Any help would be much appreciated.  If more information is needed,
>please
>let me know.
>
>Many thanks.
>--John Sparks
>
>
>
>library(quantmod)
>A <- data.frame(population=c(100, 300, 5000, 2000, 900, 2500))
>A$Rate<-ROC(A["population"])
>
>B <- data.frame(population=c(200, 300, 4000, 3000, 2000, 500))
>B$Rate<-ROC(B["population"])
>
>letters<-c("A","B")
>length(letters)
>
>#for (i in letters){
># HELP!
>#}
>
>______________________________________________
>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.



More information about the R-help mailing list