В Юникоде буквы с акцентами могут быть представлены двумя способами: самой подчеркнутой буквой и комбинацией голой буквы с акцентом. Например, é (+ U00E9) и e'(+ U0065 + U0301) обычно отображаются одинаково.Нормализация Юникода (форма C) в R: преобразовать все символы с акцентами в их одно-кодировку символов?
R оказывает следующее (версии 3.0.2, Mac OS 10.7.5):
> "\u00e9"
[1] "é"
> "\u0065\u0301"
[1] "é"
Однако, конечно:
> "\u00e9" == "\u0065\u0301"
[1] FALSE
Есть функция в R, который преобразует буквы двух-юникодовых символов в их односимвольные формы? В частности, здесь он обрушится "\u0065\u0301"
на "\u00e9"
.
Это было бы очень удобно обрабатывать большие количества струн. Кроме того, односимвольные формы могут быть легко преобразованы в другие кодировки через iconv
- по крайней мере, для обычных символов Latin1 - и лучше обрабатываются plot
.
Большое спасибо.
Возможно, вы захотите опубликовать свое редактирование в качестве ответа. Таким образом, вопрос возникает, как ответ. Кроме того, IIRC, вы должны преобразовать в форму D, а не C, поскольку комбинированные символы немного взломаны. – krzysz00
Спасибо! Возможно, вы правы в форме D вообще, хотя до сих пор форма C казалась более приспособленной к моей практике (например, 'iconv (" \ u0065 \ u0301 ", to =" ASCII // TRANSLIT ")' дает 'NA', тогда как 'iconv (normalize_C (" \ u0065 \ u0301 "), to =" ASCII // TRANSLIT ")' дает '' 'e' ', а' plot' лучше печатает метки в форме C). Я постараюсь узнать больше о плюсах и минусах. – AlxH
@AlxH ты спас мой день - спасибо! – marsei