You could split the string into letters and figure out which ones are �b�
which(strsplit(x, "")[[1]] == "b") and then find the difference between each position, �anchoring� at position 0 > diff(c(0, which(strsplit(x, "")[[1]] == "b"))) [1] 2 4 1 6 4 From: R-help <r-help-boun...@r-project.org> on behalf of Evan Cooch <evan.co...@gmail.com> Date: Friday, December 2, 2022 at 6:56 PM To: r-help@r-project.org <r-help@r-project.org> Subject: [R] interval between specific characters in a string... 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@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. [[alternative HTML version deleted]]
______________________________________________ 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.