I am creating a nested for loop and following are the codes I'm using, but I am not acheiving what I want. I have a vector d<-151:159 I have another vector e<-e<-c("apple", "orange", "banana") I need to create f as 151apple 151orange 151banana . . 159apple 159orange 159banana Here is how I wrote nested for loop... for (i in 1:length(d)) { for (j in 1:length(e)) { x[j]<-paste(d[i],e[j],sep="") print(x[j]) } } The result of the above codes is....> for (i in 1:length(d))+ { for (j in 1:length(e)) + { + x[j]<-paste(d[i],e[j],sep="") + print(x[j]) + } + } [1] "151apple" [1] "151orange" [1] "151banana">What do I need to do this looping produce the desired result. Thanks Arun ---- -- View this message in context: http://r.789695.n4.nabble.com/Nested-For-Loop-tp4634804.html Sent from the R help mailing list archive at Nabble.com.
Hello, Try, in one line and no loops, surely not nested, apply(rev(expand.grid(e, d, stringsAsFactors = FALSE)), 1, paste, collapse="") Hope this helps, Rui Barradas Em 28-06-2012 22:03, arun.gurubaramurugeshan escreveu:> I am creating a nested for loop and following are the codes I'm using, but I > am not acheiving what I want. > > I have a vector > > d<-151:159 > > I have another vector > > e<-e<-c("apple", "orange", "banana") > > I need to create f as > 151apple > 151orange > 151banana > . > . > 159apple > 159orange > 159banana > > Here is how I wrote nested for loop... > > for (i in 1:length(d)) > { for (j in 1:length(e)) > { > x[j]<-paste(d[i],e[j],sep="") > print(x[j]) > } > } > > The result of the above codes is.... > >> for (i in 1:length(d)) > + { for (j in 1:length(e)) > + { > + x[j]<-paste(d[i],e[j],sep="") > + print(x[j]) > + } > + } > [1] "151apple" > [1] "151orange" > [1] "151banana" >> > > > What do I need to do this looping produce the desired result. > > Thanks > Arun > ---- > > > > > > -- > View this message in context: http://r.789695.n4.nabble.com/Nested-For-Loop-tp4634804.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. >
On Jun 28, 2012, at 5:03 PM, arun.gurubaramurugeshan wrote:> I am creating a nested for loop and following are the codes I'm > using, but I > am not acheiving what I want. > > I have a vector > > d<-151:159 > > I have another vector > > e<-e<-c("apple", "orange", "banana")> > I need to create f as > 151apple > 151orange > 151banana > . > . > 159apple > 159orange > 159banana >I admit that I think Bert's solution is way kewler than mine, but I would not have thought of using interaction() to mimic the "crossed" use of rep() paste(as.character(rep(d, each=length(e))), rep(e, times=length(d) ), sep="") (Looking at the code for interaction one sees that this is how it was coded.) The other R functions to remember for this sort of loop-avoidance are 'outer' and 'expand.grid'. > outer(d,e,paste, sep="") [,1] [,2] [,3] [1,] "151apple" "151orange" "151banana" [2,] "152apple" "152orange" "152banana" [3,] "153apple" "153orange" "153banana" [4,] "154apple" "154orange" "154banana" [5,] "155apple" "155orange" "155banana" as.vector( outer(d, e, paste, sep="") ) -- David.> Here is how I wrote nested for loop... > > for (i in 1:length(d)) > { for (j in 1:length(e)) > { > x[j]<-paste(d[i],e[j],sep="") > print(x[j]) > } > } > > The result of the above codes is.... > >> for (i in 1:length(d)) > + { for (j in 1:length(e)) > + { > + x[j]<-paste(d[i],e[j],sep="") > + print(x[j]) > + } > + } > [1] "151apple" > [1] "151orange" > [1] "151banana" >> > > > What do I need to do this looping produce the desired result. > > Thanks > Arun > ---- > > > > > > -- > View this message in context: http://r.789695.n4.nabble.com/Nested-For-Loop-tp4634804.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.David Winsemius, MD West Hartford, CT
Hi, I knew that you already got many replies. Here is my contribution. dat1<-paste0(expand.grid(d,e)$Var1,expand.grid(d,e)$Var2,sep="") or dat2<-as.vector(rbind(paste0(d,e[1],sep=""),paste0(d,e[2],sep=""),paste0(d,e[3],sep=""))) #Still Bert's one line is the shortest A.K. ----- Original Message ----- From: arun.gurubaramurugeshan <arun.gurubaramurugeshan at autozone.com> To: r-help at r-project.org Cc: Sent: Thursday, June 28, 2012 5:03 PM Subject: [R] Nested For Loop I am creating a nested for loop and following are the codes I'm using, but I am not acheiving what I want. I have a vector d<-151:159 I have another vector e<-e<-c("apple", "orange", "banana") I need to create f as 151apple 151orange 151banana . . 159apple 159orange 159banana Here is how I wrote nested for loop... for (i in 1:length(d)) { for (j in 1:length(e)) { x[j]<-paste(d[i],e[j],sep="") print(x[j]) } } The result of the above codes is....> for (i in 1:length(d))+ { for (j in 1:length(e)) + { + x[j]<-paste(d[i],e[j],sep="") + print(x[j]) + } + } [1] "151apple" [1] "151orange" [1] "151banana">What do I need to do this looping produce the desired result. Thanks Arun ---- -- View this message in context: http://r.789695.n4.nabble.com/Nested-For-Loop-tp4634804.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.