[R] How to search for a sequence(and its combination) inside a vector?

John Kane jrkrideau at inbox.com
Sat Jul 20 18:52:14 CEST 2013


Taking Berend's example a bit further, this seems to work

If you use str(b) you will see it is a list

b <- rle(a)
cc  <-  data.frame(b[[1]], b[[2]])
names(cc)  <-  c("leng", 'val')
dd  <-  subset(cc, val ==TRUE )
table(dd)

John Kane
Kingston ON Canada


> -----Original Message-----
> From: tmrsg11 at gmail.com
> Sent: Sat, 20 Jul 2013 12:36:55 -0400
> To: bhh at xs4all.nl
> Subject: Re: [R] How to search for a sequence(and its combination) inside
> a vector?
> 
> Hi Berend
> I am looking for a table,
> # of times one element (out of 1, 2, 3) showed up, two elements, and all
> three.
> 
> I am trying, don't know if this works:
> 
>> aa <- rle(a)
>> b <- aa$lengths[aa$values]
>> table(b)
> b
>  1  3
>  3 12
> 
> Mike
> 
> 
> 
> On Sat, Jul 20, 2013 at 12:24 PM, Berend Hasselman <bhh at xs4all.nl> wrote:
>> 
>> On 20-07-2013, at 18:05, C W <tmrsg11 at gmail.com> wrote:
>> 
>>> Hi R list,
>>> 
>>> I have a sequence repeating 1:15 .  Some numbers are deleted.  I want
>>> to find how many times 1, 2, 3 appeared.
>>> Basically, I want to "grab" the beginning of the sequence and tally it
>>> up.
>>> 
>>> R code:
>>> 
>>>> vec <- c(1, 2, 3, 4, 5, 6, 7, 8, 13, 1, 2, 3, 5, 7, 8, 10, 12, 13, 14,
>>> 15, 1, 2, 3, 5, 6, 10, 12, 13, 1, 2, 3, 4, 5, 6, 7, 12, 13, 14,
>>> 15, 1, 2, 3, 6, 9, 10, 11, 13, 14, 1, 7, 10, 13, 1, 2, 3, 4,
>>> 6, 7, 9, 11, 14, 1, 2, 3, 5, 9, 10, 11, 12, 14, 1, 2, 3, 4, 1,
>>> 2, 3, 4, 11, 12, 14, 1, 2, 3, 4, 8, 11, 12, 1, 2, 3, 4, 5, 7,
>>> 8, 9, 11, 12, 15, 3, 14, 1, 2, 3, 6, 10, 11, 13, 14, 1)
>>> 
>>>> a <- vec %in% c(1, 2, 3)
>>>> a
>>>  [1]  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
>>> TRUE  TRUE FALSE FALSE
>>> [15] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE
>>> FALSE FALSE FALSE FALSE
>>> [29]  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
>>> FALSE  TRUE  TRUE  TRUE
>>> [43] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
>>> TRUE  TRUE  TRUE FALSE
>>> [57] FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE
>>> FALSE FALSE FALSE FALSE
>>> [71]  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE
>>> FALSE  TRUE  TRUE  TRUE
>>> [85] FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE
>>> FALSE FALSE FALSE FALSE
>>> [99] FALSE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE
>>> TRUE
>>> 
>>>> rle(a)
>>> Run Length Encoding
>>>  lengths: int [1:29] 3 6 3 8 3 5 3 8 3 6 ...
>>>  values : logi [1:29] TRUE FALSE TRUE FALSE TRUE FALSE ...
>>> 
>>> What should I do after this?
>>> 
>> 
>> Well how about
>> 
>> sum(a)
>> 
>> or
>> 
>> b <- rle(a)
>> sum(b$lengths[b$values])
>> 
>> Berend
>> 
>>> Thanks,
>>> Mike
>>> 
>>> ______________________________________________
>>> 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.
>> 
> 
> ______________________________________________
> 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.

____________________________________________________________
Receive Notifications of Incoming Messages
Easily monitor multiple email accounts & access them with a click.
Visit http://www.inbox.com/notifier and check it out!



More information about the R-help mailing list