[This article was first published on theBioBucket*, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
How to apply the same changes to several dataframes andWant to share your content on R-bloggers? click here if you have a blog, or here if you don't.
save them to CSV:
# a dataframe a <- data.frame(x = 1:3, y = 4:6) # make a list of several dataframes, then apply function (change column names, e.g.): my.list <- list(a, a) my.list <- lapply(my.list, function(x) {names(x) <- c("a", "b") ; return(x)}) # save dfs to csv with similar lapply-call: n <- 1:length(my.list) lapply(n, function(ni) { write.table(file = paste(ni, ".csv", sep = ""), my.list[ni], sep = ";", row.names = F) } )
Edit:
I’ll extend this to a script that reads several files from a directory, applies changes to the files in the same fashion and finally saves files back to the directory (as HERE)
# clean up rm(list = ls()) setwd(tempdir()) unlink(dir(tempdir())) # create some files in tempdir: a <- data.frame(x = 1:3, y = 4:6) b <- data.frame(x = 10:13, y = 14:15) write.csv(a, "file1.csv", row.names = F) write.csv(b, "file2.csv", row.names = F) # now read all files to list: mycsv = dir(pattern=".csv") n <- length(mycsv) mylist <- vector("list", n) for(i in 1:n) mylist[[i]] <- read.csv(mycsv[i]) # now change something in all dfs in list: mylist <- lapply(mylist, function(x) {names(x) <- c("a", "b") ; return(x)}) # then save back dfs: for(i in 1:n) write.csv(file = paste("file", i, ".csv", sep = ""), mylist[i], row.names = F)
To leave a comment for the author, please follow the link and comment on their blog: theBioBucket*.
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.