I am trying to count the number of times that the characters in a string change For example- new=c(AAAABBBBBABBBABB) I want to find the number of times that B changes to A and the number of times that A changes to B. I tried the grep command but I only figured out the positions of when B changes to A when I only need the number of times it occurs. -- View this message in context: http://r.789695.n4.nabble.com/text-search-in-r-tp4638961.html Sent from the R help mailing list archive at Nabble.com.
On Aug 2, 2012, at 2:27 PM, rnewbie565 wrote:> I am trying to count the number of times that the characters in a > string > change > For example- > new=c(AAAABBBBBABBBABB)Presumably you meant to quote that string.> I want to find the number of times that B changes to A and the > number of > times that A changes to B. I tried the grep command but I only > figured out > the positions of when B changes to A when I only need the number of > times it > occurs.> new=c('AAAABBBBBABBBABB') > unlist(strsplit(new,"")) [1] "A" "A" "A" "A" "B" "B" "B" "B" "B" "A" "B" "B" "B" "A" "B" "B" > rle(unlist(strsplit(new,""))) Run Length Encoding lengths: int [1:6] 4 5 1 3 1 2 values : chr [1:6] "A" "B" "A" "B" "A" "B" > paste0( rle(unlist(strsplit(new,"")))$values, collapse="") [1] "ABABAB" > gregexpr("AB", .Last.value) [[1]] [1] 1 3 5 attr(,"match.length") [1] 2 2 2 attr(,"useBytes") [1] TRUE So the length of that list value could be used for the AB transitions. Similarly for the BA ones > strrle <- paste0( rle(unlist(strsplit(new,"")))$values, collapse="") > length( gregexpr("BA", strrle)[[1]] ) [1] 2> > > > > -- > View this message in context: http://r.789695.n4.nabble.com/text-search-in-r-tp4638961.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > 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.David Winsemius, MD Alameda, CA, USA
Hi,
You could also use these:
library(Biostrings)
?gregexpr2("AB",new)
#[[1]]
#[1]? 4 10 14
?length(unlist(gregexpr2("AB",new)))
#[1] 3
?length(unlist(gregexpr2("BA",new)))
#[1] 2
matchPattern("AB",new)
?# Views on a 16-letter BString subject
#subject: AAAABBBBBABBBABB
#views:
? #? start end width
#[1]???? 4?? 5???? 2 [AB]
#[2]??? 10? 11???? 2 [AB]
#[3]??? 14? 15???? 2 [AB]
?res1<-matchPattern("AB",new)
length(res1)
#[1] 3
?res2<-matchPattern("BA",new)
?length(res2)
#[1] 2
#another string
new1<-c("ABABAAABABAAAABABABBA")
?res2<-matchPattern("BA",new1)
length(res2)
#[1] 7
?length(unlist(gregexpr2("BA",new1)))
#[1] 7
A.K.
----- Original Message -----
From: rnewbie565 <amy.jacobson2 at gmail.com>
To: r-help at r-project.org
Cc:
Sent: Thursday, August 2, 2012 5:27 PM
Subject: [R] text search in r
I am trying to count the number of times that the characters in a string
change
For example-
new=c(AAAABBBBBABBBABB)
I want to find the number of times that B changes to A and the number of
times that A changes to B. I tried the grep command but I only figured out
the positions of when B changes to A when I only need the number of times it
occurs.
--
View this message in context:
http://r.789695.n4.nabble.com/text-search-in-r-tp4638961.html
Sent from the R help mailing list archive at Nabble.com.
______________________________________________
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.
Hi,
One more solution:
new<-"AAAABBBBBABBBABB"
resAB<-count(unlist(strsplit(gsub("AB",1,new),""))==1)[2,]
?resAB
#???? x freq
#2 TRUE??? 3
resBA<-count(unlist(strsplit(gsub("BA",2,new),""))==2)[2,]
?resBA
#???? x freq
#2 TRUE??? 2
new1<-c("ABABAAABABAAAABABABBA")
resAB<-count(unlist(strsplit(gsub("AB",1,new1),""))==1)[2,]
?resAB
?#??? x freq
#2 TRUE??? 7
resBA<-count(unlist(strsplit(gsub("BA",2,new1),""))==2)[2,]
?resBA
#???? x freq
#2 TRUE??? 7
A.K.
----- Original Message -----
From: rnewbie565 <amy.jacobson2 at gmail.com>
To: r-help at r-project.org
Cc:
Sent: Thursday, August 2, 2012 5:27 PM
Subject: [R] text search in r
I am trying to count the number of times that the characters in a string
change
For example-
new=c(AAAABBBBBABBBABB)
I want to find the number of times that B changes to A and the number of
times that A changes to B. I tried the grep command but I only figured out
the positions of when B changes to A when I only need the number of times it
occurs.
--
View this message in context:
http://r.789695.n4.nabble.com/text-search-in-r-tp4638961.html
Sent from the R help mailing list archive at Nabble.com.
______________________________________________
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.