У меня есть следующий вектор v
:
c("tactagcaatacgcttgcgttcggtggttaagtatgtataatgcgcgggcttgtcgt",
"tgctatcctgacagttgtcacgctgattggtgtcgttacaatctaacgcatcgccaa",
"gtactagagaactagtgcattagcttatttttttgttatcatgctaaccacccggcg")
Я столкнулся с очень расстраивающей проблемой здесь.Каждый элемент этого вектора представляет собой последовательность ДНК.То, что я хочу сделать, это разделить каждый элемент 2 буквы на 2 и получить количество вхождений каждой пары букв.Желаемый результат будет именно таким для первого элемента:
AA AC AG AT CA CC CG CT GA GC GG GT TA TC TG TT
3 2 2 4 1 0 6 3 0 6 4 7 7 2 5 4
Этот результат легко достигается с помощью функции oligonucleotideFrequency .Проблема в том, что эта функция не будет применяться к списку или вектору, используя sapply или lapply, и я не понимаю, где проблема и как ее исправить.
Если я это сделаю:
oligonucleotideFrequency(DNAString(v[1]), width = 2)
Это работает, и я получаю этот вывод:
AA AC AG AT CA CC CG CT GA GC GG GT TA TC TG TT
3 2 2 4 1 0 6 3 0 6 4 7 7 2 5 4
но если я сделаю:
v <- DNAString(v)
lapply(v, oligonucleotideFrequency(v, width = 2)
Это то, что я получаю:
Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function ‘oligonucleotideFrequency’ for signature ‘"list"
То же самое происходит с sapply
.
Если я проверяю класс v
после применения функции DNAString
, он возвращает "list"
, поэтому я не понимаю, в чем здесь проблема.
Даже если я сделаю:
oligonucleotideFrequency(v[1], width = 2)
, он вернется:
Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function ‘oligonucleotideFrequency’ for signature ‘"list"’
Я полностью потерян, пожалуйста, помогите, я часами ломал головув это, как я могу решить эту проблему ??Я хочу применить эту функцию сразу ко всему вектору.
PD: Пакет R, содержащий эту функцию, называется Biostrings
, и его можно загрузить и установить с здесь
Заранее спасибо