Вы можете попробовать эту функцию:
letter2num <- function(x) {utf8ToInt(x) - utf8ToInt("a") + 1L}
Вот короткий тест:
letter2num("e")
#[1] 5
set.seed(123)
myletters <- letters[sample(26,8)]]
#[1] "h" "t" "j" "u" "w" "a" "k" "q"
unname(sapply(myletters, letter2num))
#[1] 8 20 10 21 23 1 11 17
Функция вычисляет код utf8 письма, который он передал, вычитает из этого значения код utf8 буквы «a» и добавляет к этому значению номер один, чтобы гарантировать, что соглашение об индексировании R наблюдается, согласно к которой нумерация букв начинается с 1, а не с 0.
Код работает, потому что числовая последовательность кодов utf8, представляющих буквы, соответствует буквенному порядку.
Для заглавных букв можно использовать, соответственно,
LETTER2num <- function(x) {utf8ToInt(x) - utf8ToInt("A") + 1L}
Я предпочитаю это решение над 'which (x == letters)', потому что он векторизован (я могу получить буквенные индексы для вектора символов). – rensa