我有一个像
这样的清单> 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函数,但它返回逻辑值,而不是计数。
答案 0 :(得分:1)
这是使用qdap包中的term.count
(非导出函数)的一种方法:
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的来源并获取所需内容。
答案 1 :(得分:1)
使用@ 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