How to search for a sequence(and its combination) inside a vector?
Thanks John. Why do I get length of 5 and 6? I thought I am only tallying up 1 to 3?
table(dd)
val leng TRUE 1 5 2 4 3 81 5 1 6 4 -M
On Sat, Jul 20, 2013 at 12:52 PM, John Kane <jrkrideau at inbox.com> wrote:
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!