簡體   English   中英

在R中的字符向量中查找唯一對

[英]Finding unique pairs in a character vector in R

我有一個很長的字母列表,我想知道有多少對字母? 例如,如果我有AABBAAACC則會有5對。

我不知道該怎么做。

x <- "AABBAAACC"

我是R的初學者,所以請善待!

1)gregexpr試試這個:

> length(gregexpr("(.)(?=\\1)", "AABBAAACC", perl = TRUE)[[1]])
[1] 5

2)rollapply

> library(zoo)
> > sum(rollapply(strsplit("AABBAAACC", "")[[1]], 2, function(x) x[1] == x[2]))
[1] 5

2a)或稍微緊湊:

> library(zoo)
> library(gsubfn)
> sum(fn$rollapply(strsplit("AABBAAACC", "")[[1]], 2, ~ x[1] == x[2]))
[1] 5

3)頭/尾

> s <- strsplit("AABBAAACC", "")[[1]]
> sum(tail(s, -1) == head(s, -1))
[1] 5

增加了更多解決方案。

@G。 格洛騰迪克的答案更好,但我想到了一種非正則表達方法:

runs <- rle(unlist(strsplit("AABBAAACC", NULL)))
sum(runs[[1]][runs[[1]] > 1] - 1)

找到一個字符的最長運行長度。 減去一個以獲得對的數量。 繼續添加這些。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM