[R] Passing a Data Frame Name as a Variable in a Function

Alan Yong alanyong at caltech.edu
Fri Jan 30 03:07:44 CET 2015

Much thanks, Hadley!


On Jan 29, 2015, at 12:36 PM, Hadley Wickham wrote:

> On Thu, Jan 29, 2015 at 11:43 AM, Alan Yong <alanyong at caltech.edu> wrote:
>> Much thanks to everyone for their recommendations!  I agree that fishing in the global environment isn't ideal & only shows my budding understanding of R.
>> For now, I will adapt Chel Hee's "length(eval(parse(text=DFName))[,1])" solution then fully explore Jeff's suggestion to put the data frames into a list.
> If you have to go down this route, at least do nrow(get(DFName))
>> (1) Add a column to each data frame with a string that is parsed from the appendage of the data frame name, i.e., string is "1001" from data frame object of "df.1001"; then,
>> (2) Bind the rows of all the files.
> I'd highly recommend learning a little functional programming such as
> the use of lapply (e.g. http://adv-r.had.co.nz/Functionals.html).
> Then you can easily do:
> csvs <- dir(pattern = "\\.csv$")
> all <- lapply(csvs, read.csv)
> one <- do.call("rbind", all)
> to find all the csv files in a directory, load into a list and then
> collapse into a single data frame.
> You're much better off learning how to do this than futzing around
> with named objects in the global environment.
> Hadley
> -- 
> http://had.co.nz/

More information about the R-help mailing list