Hi again, Sorry, that should be: chop_string<-function(x,ends) { starts<-c(1,ends[-length(ends)]+1) return(substring(x,starts,ends)) }
Jim On Thu, May 12, 2016 at 10:05 AM, Jim Lemon <drjimle...@gmail.com> wrote: > Hi Jan, > This might be helpful: > > chop_string<-function(x,ends) { > starts<-c(1,ends[-length(ends)]-1) > return(substring(x,starts,ends)) > } > > Jim > > > On Thu, May 12, 2016 at 7:23 AM, Jan Kacaba <jan.kac...@gmail.com> wrote: >> Here is my attempt at function which computes margins from positions. >> >> require("stringr") >> require("dplyr") >> >> ends<-seq(10,100,8) # end margins >> test_string<-"Lorem ipsum dolor sit amet, consectetuer adipiscing >> elit. Aliquam in lorem sit amet leo accumsan lacinia." >> >> sekoj=function(ends){ >> l_ends<-length(ends) >> begs=vector(mode="integer",l_ends) >> begs[1]=1 >> for (i in 2:(l_ends)){ >> begs[i]<-ends[i-1]+1 >> } >> margs<-rbind(begs,ends) >> margs<-cbind(margs,c(ends[l_ends]+1,-1)) >> #rownames(margs)<-c("beg","end") >> return(margs) >> } >> margins<-sekoj(ends) >> str_sub(test_string,margins[1,],margins[2,]) %>% print >> >> Code to run in browser: >> http://www.r-fiddle.org/#/fiddle?id=rVmNVxDV >> >> 2016-05-11 23:12 GMT+02:00 Bert Gunter <bgunter.4...@gmail.com>: >>> Dunno -- but you might have a look at Hadley Wickham's 'stringr' package: >>> https://cran.r-project.org/web/packages/stringr/stringr.pdf >>> >>> Cheers, >>> >>> Bert >>> >>> >>> Bert Gunter >>> >>> "The trouble with having an open mind is that people keep coming along >>> and sticking things into it." >>> -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) >>> >>> >>> On Wed, May 11, 2016 at 1:12 PM, Jan Kacaba <jan.kac...@gmail.com> wrote: >>>> Dear R-help >>>> >>>> I would like to split long string at specified precomputed positions. >>>> 'substring' needs beginings and ends. Is there a native function which >>>> accepts positions so I don't have to count second argument? >>>> >>>> For example I have vector of possitions pos<-c(5,10,19). Substring >>>> needs input first=c(1,6,11) and last=c(5,10,19). There is no problem >>>> to write my own function. Just asking. >>>> >>>> Derek >>>> >>>> ______________________________________________ >>>> 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. ______________________________________________ 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.