Re: [R] how to write a loop to repetitive jobs
Try this: result <- lapply(71:75, function(x){ # use 'paste0' to add the number to the file name input <- read.csv(paste0("C:/Awork/geneAssociation/removed8samples/neuhausen", x, "/seg.pr3.csv") , head=TRUE ) input$id <- paste0("sn", x) input # return the input }) result <- do.call(rbind, result) # combine dataframes together Jim Holtman Data Munger Guru What is the problem that you are trying to solve? Tell me what you want to do, not how you want to do it. On Mon, Apr 16, 2018 at 1:54 PM, Ding, Yuan Chun wrote: > Hi All.., > > I need to do the following repetitive jobs: > > seg71 <- > read.csv("C:/Awork/geneAssociation/removed8samples/neuhausen71/seg.pr3.csv", > head=T) > seg71$id <-"sn71" > > seg72 <- > read.csv("C:/Awork/geneAssociation/removed8samples/neuhausen72/seg.pr3.csv", > head=T) > seg72$id <-"sn72" > > seg73 <- > read.csv("C:/Awork/geneAssociation/removed8samples/neuhausen73/seg.pr3.csv", > head=T) > seg73$id <-"sn73" > > seg74 <- > read.csv("C:/Awork/geneAssociation/removed8samples/neuhausen74/seg.pr3.csv", > head=T) > seg74$id <-"sn74" > > seg75 <- > read.csv("C:/Awork/geneAssociation/removed8samples/neuhausen75/seg.pr3.csv", > head=T) > seg75$id <-"sn75" > > seg <- rbind (seg71, seg72, seg73, seg74, seg75) > > I want to write a loop to do it; > > For ( d in 71:75) { > Dir<-paste("C:/Awork/geneAssociation/removed8samples/neuhausen", i, > sep="") > setwd(Dir) > .. > then I do not know how to create objects seg71 to seg75; in SAS, it would > be seg&d; > > I like R, but not good at R. > > Can you help me? > > Thank you, > > Ding > > > - > -SECURITY/CONFIDENTIALITY WARNING- > This message (and any attachments) are intended solely...{{dropped:13}} __ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.
Re: [R] how to write a loop to repetitive jobs
Hi! An alternative with 'assign': for ( i in 71:75) { setwd(paste("C:/Awork/geneAssociation/removed8samples/neuhausen", i, sep="")) temp.df<-read.csv("seg.pr3.csv", head=T) temp.df$id<-paste0("sn",i,sep="") assign(paste0("seg",i,sep=""),temp.df) } rm(temp.df,i) # Clean up HTH, Kimmo 2018-04-17 kello 08:15 +0200, Albrecht Kauffmann wrote: > Hello Ding, > > try this: > > seg <- list() > for ( d in 71:75) { > s <- paste0("seg",d) > sn <- paste0("sn",d) > Dir<-paste("C:/Awork/geneAssociation/removed8samples/neuhausen", i, > sep="") > setwd(Dir) > seg[[s]] <- read.csv("seg.pr3.csv", head=T) > seg[[s]]$id <- sn > } > > Greetings, > Albrecht > __ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.
Re: [R] how to write a loop to repetitive jobs
Hello Ding, try this: seg <- list() for ( d in 71:75) { s <- paste0("seg",d) sn <- paste0("sn",d) Dir<-paste("C:/Awork/geneAssociation/removed8samples/neuhausen", i, sep="") setwd(Dir) seg[[s]] <- read.csv("seg.pr3.csv", head=T) seg[[s]]$id <- sn } Greetings, Albrecht -- Albrecht Kauffmann alkau...@fastmail.fm Am Mo, 16. Apr 2018, um 22:54, schrieb Ding, Yuan Chun: > Hi All.., > > I need to do the following repetitive jobs: > > seg71 <- read.csv("C:/Awork/geneAssociation/removed8samples/neuhausen71/ > seg.pr3.csv", head=T) > seg71$id <-"sn71" > > seg72 <- read.csv("C:/Awork/geneAssociation/removed8samples/neuhausen72/ > seg.pr3.csv", head=T) > seg72$id <-"sn72" > > seg73 <- read.csv("C:/Awork/geneAssociation/removed8samples/neuhausen73/ > seg.pr3.csv", head=T) > seg73$id <-"sn73" > > seg74 <- read.csv("C:/Awork/geneAssociation/removed8samples/neuhausen74/ > seg.pr3.csv", head=T) > seg74$id <-"sn74" > > seg75 <- read.csv("C:/Awork/geneAssociation/removed8samples/neuhausen75/ > seg.pr3.csv", head=T) > seg75$id <-"sn75" > > seg <- rbind (seg71, seg72, seg73, seg74, seg75) > > I want to write a loop to do it; > > For ( d in 71:75) { > Dir<-paste("C:/Awork/geneAssociation/removed8samples/neuhausen", i, > sep="") > setwd(Dir) > .. > then I do not know how to create objects seg71 to seg75; in SAS, it > would be seg&d; > > I like R, but not good at R. > > Can you help me? > > Thank you, > > Ding > > > - > -SECURITY/CONFIDENTIALITY WARNING- > This message (and any attachments) are intended solely...{{dropped:8}} __ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.
Re: [R] how to write a loop to repetitive jobs
Hi Rui, Thank you very much!! It worked very well, I am looking into how to use lapply and do.call. Ding -Original Message- From: Rui Barradas [mailto:ruipbarra...@sapo.pt] Sent: Monday, April 16, 2018 2:16 PM To: Ding, Yuan Chun; r-help@r-project.org Subject: Re: [R] how to write a loop to repetitive jobs Hello, The following might do it. Without data it's untested. wd <- function(i){ paste0("C:/Awork/geneAssociation/removed8samples/neuhausen7", i, "/seg.pr3.csv") } seg <- lapply(1:5, function(i) { DF <-read.csv(wd(i)) DF$id <- paste0("sn7", i) DF }) seg <- do.call(rbind, seg) row.names(seg) <- NULL Hope this helps, Rui Barradas On 4/16/2018 9:54 PM, Ding, Yuan Chun wrote: > Hi All.., > > I need to do the following repetitive jobs: > > seg71 <- > read.csv("C:/Awork/geneAssociation/removed8samples/neuhausen71/seg.pr3.csv", > head=T) seg71$id <-"sn71" > > seg72 <- > read.csv("C:/Awork/geneAssociation/removed8samples/neuhausen72/seg.pr3.csv", > head=T) seg72$id <-"sn72" > > seg73 <- > read.csv("C:/Awork/geneAssociation/removed8samples/neuhausen73/seg.pr3.csv", > head=T) seg73$id <-"sn73" > > seg74 <- > read.csv("C:/Awork/geneAssociation/removed8samples/neuhausen74/seg.pr3.csv", > head=T) seg74$id <-"sn74" > > seg75 <- > read.csv("C:/Awork/geneAssociation/removed8samples/neuhausen75/seg.pr3.csv", > head=T) seg75$id <-"sn75" > > seg <- rbind (seg71, seg72, seg73, seg74, seg75) > > I want to write a loop to do it; > > For ( d in 71:75) { >Dir<-paste("C:/Awork/geneAssociation/removed8samples/neuhausen", i, sep="") >setwd(Dir) > .. > then I do not know how to create objects seg71 to seg75; in SAS, it would be > seg&d; > > I like R, but not good at R. > > Can you help me? > > Thank you, > > Ding > > > - > -SECURITY/CONFIDENTIALITY WARNING- > This message (and any attachments) are intended solely > f...{{dropped:22}} > > __ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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 -- To UNSUBSCRIBE and more, see 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.
Re: [R] how to write a loop to repetitive jobs
Hello, The following might do it. Without data it's untested. wd <- function(i){ paste0("C:/Awork/geneAssociation/removed8samples/neuhausen7", i, "/seg.pr3.csv") } seg <- lapply(1:5, function(i) { DF <-read.csv(wd(i)) DF$id <- paste0("sn7", i) DF }) seg <- do.call(rbind, seg) row.names(seg) <- NULL Hope this helps, Rui Barradas On 4/16/2018 9:54 PM, Ding, Yuan Chun wrote: Hi All.., I need to do the following repetitive jobs: seg71 <- read.csv("C:/Awork/geneAssociation/removed8samples/neuhausen71/seg.pr3.csv", head=T) seg71$id <-"sn71" seg72 <- read.csv("C:/Awork/geneAssociation/removed8samples/neuhausen72/seg.pr3.csv", head=T) seg72$id <-"sn72" seg73 <- read.csv("C:/Awork/geneAssociation/removed8samples/neuhausen73/seg.pr3.csv", head=T) seg73$id <-"sn73" seg74 <- read.csv("C:/Awork/geneAssociation/removed8samples/neuhausen74/seg.pr3.csv", head=T) seg74$id <-"sn74" seg75 <- read.csv("C:/Awork/geneAssociation/removed8samples/neuhausen75/seg.pr3.csv", head=T) seg75$id <-"sn75" seg <- rbind (seg71, seg72, seg73, seg74, seg75) I want to write a loop to do it; For ( d in 71:75) { Dir<-paste("C:/Awork/geneAssociation/removed8samples/neuhausen", i, sep="") setwd(Dir) .. then I do not know how to create objects seg71 to seg75; in SAS, it would be seg&d; I like R, but not good at R. Can you help me? Thank you, Ding - -SECURITY/CONFIDENTIALITY WARNING- This message (and any attachments) are intended solely f...{{dropped:22}} __ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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 -- To UNSUBSCRIBE and more, see 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.