> On 5/11/2016 2:23 PM, Jan Kacaba 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 > >>> > > I think you can simply this. just create a function (I'll call it begs) > to compute the beginning positions. > > begs <- function(x) c(0,x[-length(x)])+1 > > Then, then use that function in your call to str_sub > > str_sub(test_string,begs(ends),ends) %>% print >
and why can't you simply use base R's substr() function ? Packages (such as 'stringr' in this case) have their uses and great merits, but using base R seems more sensical to me (also slightly more future-proof). > Hope this is helpful, Yes, I'd think so , because that was also my quick thought when I read the OP's question. Martin -- Martin Maechler, ETH Zurich & R Core ______________________________________________ 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.