R中的成对序列表匹配

siv3szwd  于 2023-01-15  发布在  其他
关注(0)|答案(1)|浏览(87)

我在R for lists中做序列比对/匹配时遇到了问题,让我解释一下,我的数据是点击流数据,序列被划分为n元语法,序列看起来像

1. ABDCGHEI... NaNa
2. ACSNa.... NaNa

等等,Na代表“不可用”,需要匹配序列长度。现在我把所有这些序列以一种粗鲁的方式放入一个列表,就像

dativec = as.vector(dataseq2)
for(i in 1:length(dativec)) {
  prova2[[i]] = dativec[i]
}
BigramTokenizer <- function(x) {
  NGramTokenizer(x, Weka_control(min = 2, max = 2))
}
prova3 = lapply(prova2, BigramTokenizer)

并将它们分成n元文法,例如二元文法看起来像这样:

[[1]] "A B" "B D" "D C".... "Na Na"
[[2]] "A C" "C S" .... "Na Na"

现在的挑战是:我如何匹配列表中每个元素的二元模型,以及列表中其他元素的二元模型?我尝试使用Biostrings包,但是pairwiseAlignment函数只返回列表中每个元素的第一个二元模型的分数,而我只需要知道它们是否相同,我需要所有的比较,而不仅仅是第一个元素。想要的结果是没有位置信息的相等子元的百分比。我只关心身份。我也尝试使用setdiff函数,但显然它没有。I don“我不能按我想要的方式工作。
编辑以获得更多清晰度

bmp9r5qi

bmp9r5qi1#

您可以使用outer

bigrams <- list (a = c("A B", "B D", "D C", "Na Na"),
                 b = c("A C", "C S", "Na Na"))

with(bigrams, outer(a, b, `==`))

##>       [,1]  [,2]  [,3]
##> [1,] FALSE FALSE FALSE
##> [2,] FALSE FALSE FALSE
##> [3,] FALSE FALSE FALSE
##> [4,] FALSE FALSE  TRUE

相关问题