Is there a more concise way to write the following code? library(gdata) mydataOUTPUTrtfA <- read.csv("mergedStatstA.csv") save(mydataOUTPUTrtfA, file="mydataOUTPUTrtfA.RData") mydataOUTPUTrtfA <- rename.vars(mydataOUTPUTrtfA, from="X", to="Statistics.Calculated", info=FALSE) mydataOUTPUTrtfB <- read.csv("mergedStatstB.csv") save(mydataOUTPUTrtfB, file="mydataOUTPUTrtfB.RData") mydataOUTPUTrtfB <- rename.vars(mydataOUTPUTrtfB, from="X", to="Statistics.Calculated", info=FALSE) mydataOUTPUTrtfC <- read.csv("mergedStatstC.csv") save(mydataOUTPUTrtfC, file="mydataOUTPUTrtfC.RData") mydataOUTPUTrtfC <- rename.vars(mydataOUTPUTrtfC, from="X", to="Statistics.Calculated", info=FALSE) I will have a series of mydataOUTPUTrtf files spanning a large portion of the alphabet, so to speak: e.g. mydataOUTPUTrtfA to mydataOUTPUTrtfG --- thanks for your help -- View this message in context: http://r.789695.n4.nabble.com/condense-repetitive-code-for-read-csv-and-rename-vars-tp4673783.html Sent from the R help mailing list archive at Nabble.com.
Siraaj Khandkar
2013-Aug-15 01:07 UTC
[R] condense repetitive code for read.csv and rename.vars
On 08/14/2013 03:43 PM, bcrombie wrote:> Is there a more concise way to write the following code? > > library(gdata) > mydataOUTPUTrtfA <- read.csv("mergedStatstA.csv") > save(mydataOUTPUTrtfA, file="mydataOUTPUTrtfA.RData") > mydataOUTPUTrtfA <- rename.vars(mydataOUTPUTrtfA, from="X", > to="Statistics.Calculated", info=FALSE) > > mydataOUTPUTrtfB <- read.csv("mergedStatstB.csv") > save(mydataOUTPUTrtfB, file="mydataOUTPUTrtfB.RData") > mydataOUTPUTrtfB <- rename.vars(mydataOUTPUTrtfB, from="X", > to="Statistics.Calculated", info=FALSE) > > mydataOUTPUTrtfC <- read.csv("mergedStatstC.csv") > save(mydataOUTPUTrtfC, file="mydataOUTPUTrtfC.RData") > mydataOUTPUTrtfC <- rename.vars(mydataOUTPUTrtfC, from="X", > to="Statistics.Calculated", info=FALSE) > > I will have a series of mydataOUTPUTrtf files spanning a large portion of > the alphabet, so to speak: > e.g. mydataOUTPUTrtfA to mydataOUTPUTrtfG --- thanks for your help >alphabet <- c("FOO", "BAR", "BAZ") for (a in alphabet) { filename <- paste(c("basename", a, ".csv"), collapse="") data <- read.csv(filename) date <- rename.vars( data , from="X" , to="Statistics.Calculated" , info=FALSE ) # do some other stuff with data } You should be able to pick it up from here. In case you need an actual alphabet, it is already predefined: > LETTERS [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" [18] "R" "S" "T" "U" "V" "W" "X" "Y" "Z" > letters [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" [18] "r" "s" "t" "u" "v" "w" "x" "y" "z" >
HI, You could try: #If all the files are in the working directory: vec1<-list.files() #Created 3 dummy files in my WD vec1 #[1] "mergedStatstA.csv" "mergedStatstB.csv" "mergedStatstC.csv" library(gdata) lapply(seq_along(vec1),function(i) {x1<-read.csv(vec1[i],header=TRUE,sep="\t");x2<-rename.vars(x1,from="X",to="Statistics.Calculated",info=FALSE);write.csv(x2,paste0("Modified_",vec1[i]),row.names=FALSE)}) ###If you want #to save it as a different file name. list.files() #[1] "mergedStatstA.csv"????????? "mergedStatstB.csv"???????? #[3] "mergedStatstC.csv"????????? "Modified_mergedStatstA.csv" #[5] "Modified_mergedStatstB.csv" "Modified_mergedStatstC.csv" vec2<- list.files()[grep("Modified",list.files())] sapply(seq_along(vec2),function(i){x1<-read.csv(vec2[i],header=TRUE); colnames(x1)}) #???? [,1]??????????????????? [,2]??????????????????? [,3]?????????????????? #[1,] "Statistics.Calculated" "Statistics.Calculated" "Statistics.Calculated" #[2,] "col2"????????????????? "col3"????????????????? "col4"? A.K. ----- Original Message ----- From: bcrombie <bcrombie at utk.edu> To: r-help at r-project.org Cc: Sent: Wednesday, August 14, 2013 3:43 PM Subject: [R] condense repetitive code for read.csv and rename.vars Is there a more concise way to write the following code? library(gdata) mydataOUTPUTrtfA <- read.csv("mergedStatstA.csv") save(mydataOUTPUTrtfA, file="mydataOUTPUTrtfA.RData") mydataOUTPUTrtfA <- rename.vars(mydataOUTPUTrtfA, from="X", to="Statistics.Calculated", info=FALSE) mydataOUTPUTrtfB <- read.csv("mergedStatstB.csv") save(mydataOUTPUTrtfB, file="mydataOUTPUTrtfB.RData") mydataOUTPUTrtfB <- rename.vars(mydataOUTPUTrtfB, from="X", to="Statistics.Calculated", info=FALSE) mydataOUTPUTrtfC <- read.csv("mergedStatstC.csv") save(mydataOUTPUTrtfC, file="mydataOUTPUTrtfC.RData") mydataOUTPUTrtfC <- rename.vars(mydataOUTPUTrtfC, from="X", to="Statistics.Calculated", info=FALSE) I will have a series of mydataOUTPUTrtf files spanning a large portion of the alphabet, so to speak: e.g. mydataOUTPUTrtfA to mydataOUTPUTrtfG? --- thanks for your help -- View this message in context: http://r.789695.n4.nabble.com/condense-repetitive-code-for-read-csv-and-rename-vars-tp4673783.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ 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.