jim holtman wrote: > You have to return a value from the function in the lapply and assign the > result to another object: > > >> df <- data.frame(a=1,b=2,c=3,d=4) >> a <- list(df,df,df,df) >> # to change the name of the second, you have to change the name and then >> > return > >> # the dataframe as the return value and assign it back into another list >> a.1 <- lapply(a, function(x){ >> > + names(x)[2] <- 'newName' > + x # return > + }) > >> a >> > [[1]] > a b c d > 1 1 2 3 4 > [[2]] > a b c d > 1 1 2 3 4 > [[3]] > a b c d > 1 1 2 3 4 > [[4]] > a b c d > 1 1 2 3 4 > >> a.1 >> > [[1]] > a newName c d > 1 1 2 3 4 > [[2]] > a newName c d > 1 1 2 3 4 > [[3]] > a newName c d > 1 1 2 3 4 > [[4]] > a newName c d > 1 1 2 3 4 > > >
i think this is a typical case of where for-looping is the method of choice, given the brief description below: dfs = list(d1, d2, d3, d4) for (i in 1:length(dfs)) names(dfs[[i]])[2] = 'x2' on the side, the solution above is in the good functional style, but seems comparatively inefficient: dfs = replicate(1000, data.frame(a=1:1000, b=1000:1), simplify=FALSE) library(rbenchmark) benchmark(columns=c('test', 'elapsed'), replications=100, 'for'=for (i in 1:length(dfs)) names(dfs[[i]])[2] = 'foo', lapply={dfs = lapply(dfs, function(df) { names(df)[2] = 'foo' df })}) # test elapsed # 1 for 2.262 # 2 lapply 3.211 vQ > On Mon, May 25, 2009 at 6:19 PM, James Fearon <jfea...@stanford.edu> wrote: > > >> Hi, >> >> Say I have dataframes d1, d2, ... , dn, and I want to apply a function to >> all of them. For example, say I want to change the name of the second >> variable in each dataframe to "x2". The following doesn't work: >> >> a = list(d1,d2,d3,d4) >> lapply(a,function(x) names(x)[2] = "x2") >> >> What would work? >> >> Thanks for any help. >> >> ______________________________________________ >> 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<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.