Python 在蛋白质数据聚类中使用ngram(ngram.ngram.compare equired in R)

Python 在蛋白质数据聚类中使用ngram(ngram.ngram.compare equired in R),python,r,sequence,n-gram,protein-database,Python,R,Sequence,N Gram,Protein Database,有一些序列数据需要比较。预期的输出是距离矩阵,它显示了每个序列与其他序列的相似程度。以前,我在Python中使用了ngram.ngram.compare,现在我想切换到R。我找到了ngram和biogram包,但我找不到生成预期输出的确切函数 假设这是数据 a <- c("ham","bam","comb") 它是输出的等效Python代码: a = ["ham","bam","comb"] import ngram [(1 - ngram.NGram.compare(a[i],a[j]

有一些序列数据需要比较。预期的输出是距离矩阵,它显示了每个序列与其他序列的相似程度。以前,我在Python中使用了
ngram.ngram.compare
,现在我想切换到R。我找到了
ngram
biogram
包,但我找不到生成预期输出的确切函数

假设这是数据

a <- c("ham","bam","comb")
它是输出的等效Python代码:

a = ["ham","bam","comb"]
import ngram
[(1 - ngram.NGram.compare(a[i],a[j],N=1))  
                          for i in range(len(a)) 
                          for j in range((i+1),len(a)) ]

您可以使用
stringdist
包中的
stringdistmatrix
。检查
stringdist指标
文档中哪些指标可用

a <- c("ham","bam","comb")
stringdist::stringdistmatrix(a, a, method = "jaccard")

          [,1] [,2]      [,3]
[1,] 0.0000000  0.5 0.8333333
[2,] 0.5000000  0.0 0.6000000
[3,] 0.8333333  0.6 0.0000000

a非常感谢。也许输出不好。我知道杰卡德的方法。我想用ngram来比较两个序列。可能输出与我上面写的有所不同。在这种情况下,你必须给出一个更好的例子,说明你到底想要比较什么,以及它应该是什么样子。我在这里讲得很清楚。现在的问题不同了:序列的长度是相同的吗?@误用我的序列是相同长度的。然而,上面的例子并非如此。最好支持相同或不同的长度。我不认为小于1克对长度敏感。你能详细解释一下如何使用1克进行比较吗?@missuse我在这里说得很清楚:
a <- c("ham","bam","comb")
stringdist::stringdistmatrix(a, a, method = "jaccard")

          [,1] [,2]      [,3]
[1,] 0.0000000  0.5 0.8333333
[2,] 0.5000000  0.0 0.6000000
[3,] 0.8333333  0.6 0.0000000