0

我有一个类似的清单

> list(c("a","b","c","d"),c("b","c","e"))
[[1]]
[1] "a" "b" "c" "d"

[[2]]
[1] "b" "c" "e"

我有一个序列“bc”。我想将此模式与我的列表匹配,并想知道此模式的频率。所需输出:2 首先,我需要将列表转换为这种格式c("abcd"),c("bce"),以便进行匹配。如何转换和匹配?二、如何计算和存储频率?

我正在使用 grepl 函数,但它返回逻辑值,而不是计数。

4

2 回答 2

2

使用@Tyler 的示例数据,您可以使用gregexpr

lst <- list(c('a', 'b', 'c', 'd', 'b', 'c'),
            c('b', 'c', 'e'))
lst2 <- lapply(lst, paste, collapse="")
sapply(gregexpr("bc", lst2, fixed = TRUE), length)
# [1] 2 1
于 2013-07-09T05:05:24.430 回答
1

这是使用term.countqdap 包中的(非导出函数)的一种方法:

lst <- list(c('a', 'b', 'c', 'd', 'b', 'c'),c('b', 'c', 'e'))
lst2 <- lapply(lst, paste, collapse="") #use lapply to paste the list

## install.packages("qdap")
sapply(lst2, qdap:::term.count, "bc") #count occurences

## > sapply(lst2, qdap:::term.count, "bc")
## bc bc 
##  2  1 

如果您不想使用 qdap,请查看term.count的源代码并获取您需要的内容。

于 2013-07-08T14:23:04.043 回答