Use the same names (births, temp, ...) in each Rdata file and then load each file into its own environment or proto object:
library(proto); x1951 <- proto() # or x1951 <- new.env() load("1951.rda", envir = x1951) Then pass the environment or proto object to each of your functions: f <- function(x) x$difference <- x$births - x$temp f(x1951) The above completely avoids renaming variables and instead treats each year as an object. If you use proto objects the home page is: http://r-proto.googlecode.com On Dec 6, 2007 12:10 PM, Thomas Pujol <[EMAIL PROTECTED]> wrote: > R-help users, > Thanks in advance for any assistance ... I truly appreciate your expertise. > I searched help and could not figure this out, and think you can probably > offer some helpful tips. I apologize if I missed something, which I'm sure I > probably did. > > I have data for many "samples". (e.g. 1950, 1951, 1952, etc.) > > For each "sample", I have many data-frames. (e.g. temp.1952, births.1952, > gdp.1952, etc.) > > (Because the data is rather "large" (and for other reasons), I have chosen > to store the data as individual files, as opposed to a list of data frames.) > > I wish to write a function that enables me to "run" any of many custom > "functions/processes" on each sample of data. > > I currently accomplish this by using a custom function that uses: > "eval(parse(t=text.i2)) ", and "gsub(pat, rep, x)" (this changes the "sample > number" for each line of text I submit to "eval(parse(t=text.i2))" ). > > Is there a better/preferred/more flexible way to do this? > > One issue/obstacle that I have encountered: Some of the custom functions I > use need to take as input the value of "d" in the loop below. > (Please see the sample function "fn.mn.d" below.) > > #creates sample data > temp.1951 <- c(11,13,15) > births.1951 <- c(123, 156, 178) > temp.1952 <- c(21,23,25) > births.1952 <- c(223, 256, 278) > ####################### > #function that looks for a a pattern "pat.i" within "x", and replaces it with > "rep" > recurse <- function(x, pat.i,rep.i) { > f <- function(x,pat,rep) if (mode(x) == "character") gsub(pat, rep, x) else x > if (length(x) == 0) return(x) > if (is.list(x)) for(i in seq_along(x)) x[[i]] <- recurse(x[[i]], > pat.i,rep.i) > else x <- f(x,pat.i,rep.i) > x > #f <- function(x) if (mode(x) == "character") gsub("a", "green", x) else x > }# end recurse end > ####################### > ####################### > #function that processes code submitted as "text.i" for each date in "dates.i" > fn.dateloop <- function(text.i, dates.i ) { > for(d in 1: length(dates.i) ) { > tempdate <- dates.i[d] > text.i2 <- recurse(text.i, pat.i='#', rep.i=tempdate) > temp0=eval(parse(t=text.i2)) > tempname <- paste(names(temp0)[1], tempdate, sep='.') > save(list='temp0', file = tempname) > } # next d > } # end fn.dateloop > ####################### > ##################### > #a sample custom function that I want to run on each sample of data > fn.mn <- function(x, y) { > res = x - y > names(res) = 'mn' > res > } > ##################### > ##################### > #example of function that takes d as input... > #I have not been able to get this to work with the custom function > "fn.dateloop" above > #I request assistance in learning how to accomplish this > fn.mn.d <- function(x, y, d) {x[d] - y[d]} > ##################### > ##################### > setwd('c:/') #specifies location where sample data will be saved > getwd() #checks location > fn.mn(x=temp.1951, y=births.1951) > fn.mn(x=temp.1952, y=births.1952) > # > fn.dateloop(text.i = "fn.mn(x=get('temp.#'), y=get('births.#') )" , > dates.i=c('1951','1952') ) > get(load('mn.1951')) > get(load('mn.1952')) > > > > > > --------------------------------- > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@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. > ______________________________________________ R-help@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.