Hi: There are two good reasons why the loop solution is not efficient in this (and related) problem(s):
(i) There is more code and less transparency; (ii) the vectorized solution is four times faster. Here are the two proposed functions: # Vectorized version m1 <- function(v) paste(v, ' to ', v + 50, ' mN', sep = '') # Loop version: m2 <- function(v) { out <- rep(NA, length(v)) for(i in seq_along(v)) out[i] <- paste(v[i], ' to ', v[i] + 50, ' mN', sep = '') out } BndY <- seq(from = 18900, to = 19700, by = 50) > identical(m1(BndY), m2(BndY)) [1] TRUE # Put them to the test: > system.time(replicate(10000, m1(BndY))) user system elapsed 0.67 0.00 0.67 > system.time(replicate(10000, m2(BndY))) user system elapsed 2.67 0.00 2.67 The vectorized version is four times faster and produces the same output as the loop version. Experiments with a longer test vector (501 elements) maintained the timing ratio. Dennis On Wed, Nov 23, 2011 at 7:00 PM, markm0705 <markm0...@gmail.com> wrote: > Thank you > > On Thu, Nov 24, 2011 at 7:31 AM, B77S [via R] < > ml-node+s789695n4102066...@n4.nabble.com> wrote: > >> out <- vector("list") >> Ylab <- for(i in 1:length(BndY)) >> { >> out[i] <- paste(BndY[i]," to ",BndY[i],"mN") >> } >> >> Ylab <- do.call(c, out) >> >> >> >> >> >> markm0705 wrote >> Dear R helpers >> >> I'm trying to make up some labels for plot from this vector >> >> BndY<-seq(from = 18900,to= 19700, by = 50) >> >> using >> >> Ylab<-for(i in BndY) {c((paste(i," to ",i+50,"mN")))} >> >> but the vector created is NULL >> >> However if i use >> >> for(i in BndY) {print(c(paste(i," to ",i+50,"mN")))} >> >> I can see the for loop is making the labels I'm looking for but not sure >> on my error in assigning them to a vector >> >> Thanks in advance >> >> >> >> ------------------------------ >> If you reply to this email, your message will be added to the discussion >> below: >> http://r.789695.n4.nabble.com/Looping-and-paste-tp4101892p4102066.html >> To unsubscribe from Looping and paste, click >> here<http://r.789695.n4.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=4101892&code=bWFya20wNzA1QGdtYWlsLmNvbXw0MTAxODkyfDExNDQyODMxMDM=> >> . >> NAML<http://r.789695.n4.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.InstantMailNamespace&breadcrumbs=instant+emails%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml> >> > > > -- > View this message in context: > http://r.789695.n4.nabble.com/Looping-and-paste-tp4101892p4102553.html > Sent from the R help mailing list archive at Nabble.com. > [[alternative HTML version deleted]] > > ______________________________________________ > 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. > ______________________________________________ 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.