首页 > 解决方案 > 有什么办法可以为模式匹配功能做 lapply 吗?

问题描述

我正在尝试用参考字符串索引我的子字符串。子字符串有 1 或 2 个不匹配。

   substr   Ref
1 CTTGTAGG  AGGCCTTGTCGGT
2 TATGACT   ATTTATGATTGC

我想得到类似的东西

    substr   Ref         substr_start
1 CTTGTAGG  AGGCCTTGTCGGT 5            
2 TATGACT   ATTTATGATTGC  4

Biostrings 的 R matchPattern 函数工作正常。但我想通过循环或 lapply 运行它以获得文件中所有条目的结果。

这是我尝试过的:

for(i in 1:length(file$substr)){
for(j in 1:length(file$Ref)){
matchPattern(file$substr[i], file$Ref[j], max.mismatch=1, min.mismatch=0, with.indels=FALSE, fixed=TRUE, algorithm="auto") 
}}

它只是抛出一个错误说“无法为签名'因子'找到函数'matchpattern'的继承方法”

有什么好的方法可以做到这一点吗?也欢迎 R 之外的解决方案:)

标签: rpython-3.xawkpattern-matching

解决方案


您可以使用mapply应用于matchPattern每个值substr和返回值。Reffilestart

library(Biostrings)

file$substr_start <- mapply(function(x, y) {
         temp <- matchPattern(x, y, max.mismatch=1, min.mismatch=0, 
                  with.indels=FALSE, fixed=TRUE, algorithm="auto")
         start(temp)
}, file$substr, file$Ref)


file
#    substr           Ref substr_start
#1 CTTGTAGG AGGCCTTGTCGGT            5
#2  TATGACT  ATTTATGATTGC            4

推荐阅读