конвертировать письма в номера
У меня есть куча писем, и я не могу для жизни понять, как преобразовать их в их эквивалент числа.
letters[1:4]
Существует ли функция
numbers['e']
который возвращается
- Возвращаемый индекс наименьшего значения в векторе?
- Как удалить все объекты, кроме одного из рабочей области в R?
- Каковы форматы «стандартной четкой даты»?
- Слишком мало периодов для разложения ()
- Как вы читаете в нескольких файлах .txt в R?
5
или что-то определенное пользователем (например, 1994)?
Я хочу преобразовать все 26 букв в определенное значение.
- Добавить столбец «ранг» в кадр данных
- Тест anova терпит неудачу на lme fits, созданный с помощью вставленной формулы
- Определить все объекты данного classа для дальнейшей обработки
- Разделите аргументы `...` и распределите по нескольким функциям
- Преобразование десятичного в двоичный в R?
- Явное вызов return в функции или нет
- Отправка электронной почты в R через Outlook
- Загрузка нескольких файлов одновременно?
Я не знаю о «заранее построенной» функции, но такое сопоставление довольно легко настроить с помощью match
. Для конкретного примера, который вы даете, сопоставляя букву с ее положением в алфавите, мы можем использовать следующий код:
myLetters <- letters[1:26] match("a", myLetters) [1] 1
Буквально так же легко ассоциировать другие значения с буквами. Ниже приведен пример случайного выбора целых чисел.
# assign values for each letter, here a sample from 1 to 2000 set.seed(1234) myValues <- sample(1:2000, size=26) names(myValues) <- myLetters myValues[match("a", names(myValues))] a 228
Отметим также, что этот метод может быть расширен и для упорядоченных наборов букв (строк).
Создайте вектор поиска и используйте простое подмножество:
x <- letters[1:4] lookup <- setNames(seq_along(letters), letters) lookup[x] #abcd #1 2 3 4
Используйте unname
если вы хотите удалить имена.
Вы можете попробовать эту функцию:
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(letters == 'e') #[1] 5
спасибо за все идеи, но я думдум.
Вот что я сделал. Сделано сопоставление от каждой буквы к определенному числу, затем вызывается каждая буква
df=data.frame(L=letters[1:26],N=rnorm(26)) df[df$L=='e',2]