[R] interval between specific characters in a string...
Rui Barradas
ru|pb@rr@d@@ @end|ng |rom @@po@pt
Sat Dec 3 09:48:36 CET 2022
Às 17:18 de 02/12/2022, Evan Cooch escreveu:
> Was wondering if there is an 'efficient/elegant' way to do the following
> (without tidyverse). Take a string
>
> abaaabbaaaaabaaab
>
> Its easy enough to count the number of times the character 'b' shows up
> in the string, but...what I'm looking for is outputing the 'intervals'
> between occurrences of 'b' (starting the counter at the beginning of the
> string). So, for the preceding example, 'b' shows up in positions
>
> 2, 6, 7, 13, 17
>
> So, the interval data would be: 2, 4, 1, 6, 4
>
> My main approach has been to simply output positions (say, something
> like unlist(gregexpr('b', target_string))), and 'do the math' between
> successive positions. Can anyone suggest a more elegant approach?
>
> Thanks in advance...
>
> ______________________________________________
> R-help using 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.
Hello,
I don't find your solution inelegant, it's even easy to write it as a
one-line function.
char_interval <- function(x, s) {
lapply(gregexpr(x, s), \(y) c(head(y, 1), diff(y)))
}
target_string <-"abaaabbaaaaabaaab"
char_interval('b', target_string)
#> [[1]]
#> [1] 2 4 1 6 4
Hope this helps,
Rui Barradas
More information about the R-help
mailing list