在Python中比较两个列表的有效方法(从R代码转换)

时间:2019-01-11 14:24:54

标签: python r

我正在为基因组数据编写一个转换矩阵计算器。我有两个SNP列表:previousStatecurrentState。我还有一个在文件uniqueSNPs中找到的独特核苷酸的列表。

我正在尝试将此嵌套的for循环转换为R:

for (i in 1 : nstate) { totalNucleotides = sum(previousState == uniqueSNPs[i]) for (j in 1 : nstate) { matches = sum(previousState == uniqueSNPs[i] & previousState == uniqueSNPs[j]) tran.mat[i, j] = matches / totalNucleotides } }

其中nstate只是uniqueSNPs的长度。

除了Python中matches的计算外,我所有的事情都摆平了。到目前为止,我的方法:

for i in range(0, len(uniqueSNPs)):
    totalNucleotides = previousState.count(uniqueSNPs[i])
    for j in range(0, len(uniqueSNPs)):
        matches = sum((previousState == uniqueSNPs[i]) & 
            (currentState == uniqueSNPs[j]))
        mat[i,j] = matches / totalNucleotides

但是,在计算matches的行上出现错误,提示 TypeError: 'bool' object is not iterable。 我想知道是否有一种方法可以在Python中以简洁高效的方式编写此行代码?我是Python编程的新手,所以我没有发现任何不错的技巧。

谢谢!

0 个答案:

没有答案