我有一个类似的清单
> 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 函数,但它返回逻辑值,而不是计数。
我有一个类似的清单
> 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 函数,但它返回逻辑值,而不是计数。
使用@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
这是使用term.count
qdap 包中的(非导出函数)的一种方法:
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的源代码并获取您需要的内容。