Как получить индекс строки определенной длины, составленной из списка символов в R - PullRequest
3 голосов
/ 09 июля 2019

Допустим, у меня есть список символов: ['A','C','G','U'], и я хочу сделать строки определенной длины, скажем, 5.

Исходя из этого, я могу представить каждую строку этой длины в качестве индекса в порядке словаря. Например, AAAAA равно 1, AAAAC равно 2, ..., AAACA равно 5 и т.д. ...

Мой вопрос, учитывая произвольную строку такой длины, скажем, GUGAC, как мне получить его индекс, используя R? (В данном случае для GUGAC должно быть 738)

1 Ответ

3 голосов
/ 09 июля 2019

То, что у вас есть, это система счисления с базой 4. Метод состоит в том, чтобы преобразовать буквы в соответствующее число 4, умножить на ряд степеней 4 ^ n и взять сумму значений.

string<-"GUGAC"

#Convert string to a vector of letters
strletters<-unlist(strsplit(string, ""))

#covert from letters to base counting (sequence is 0, 1, 2, 3, 10, 11 etc...)
facts<-factor(strletters, levels=c("A", "C", "G", "U"))
nums<-as.integer(facts)-1 

#create list of multipliers
multipliers<-4**((length(nums)-1):0)               

#sum of the multipliers* nums + 1 (typically start counting from 1 not 0)
sum(multipliers*nums)+1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...