Message-ID: <fdbd774e-c9cf-009a-1518-6108120f833b@gmail.com>
Date: 2016-05-11T22:43:37Z
From: Daniel Nordlund
Subject: break string at specified possitions
In-Reply-To: <CAHby=D3aXQ6WF3wWWkYob1+a5wPhB0+yTGrVTJ9tzpcQz8i4kw@mail.gmail.com>
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.4567 at 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.kacaba at 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
Hope this is helpful,
Dan
Daniel Nordlund
Bothell, WA USA