Есть ли способ сделать lapply для функции patternmatch? - PullRequest
0 голосов
/ 08 мая 2020

Я пытаюсь проиндексировать свою подстроку с помощью ссылочной строки. В подстроке 1 или 2 несовпадения.

   substr   Ref
1 CTTGTAGG  AGGCCTTGTCGGT
2 TATGACT   ATTTATGATTGC

Я хочу получить что-то вроде

    substr   Ref         substr_start
1 CTTGTAGG  AGGCCTTGTCGGT 5            
2 TATGACT   ATTTATGATTGC  4

R функция matchPattern из Biostrings работает нормально. Но я хочу запустить его через l oop или 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' для сигнатуры 'factor'"

Есть ли хороший способ сделать это? Также приветствуются решения вне R :)

1 Ответ

0 голосов
/ 08 мая 2020

Вы можете использовать mapply, чтобы применить matchPattern к каждому значению substr и Ref в file и вернуть start значение.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...