Символы Unicode не отображаются после использования функции 'str_extract_all' (stringr) в Rstudio
Я пытаюсь извлечь ряд слов из серии документов.txt с помощью функции str_extract_all. Все работает хорошо, за исключением того, что в результатах, которые я получаю, не отображаются символы Юникода (что хорошо в текстах UTF-8, из которых извлекается информация). Кто-нибудь знает, почему это происходит?
[Я использую RStudio на Windows 10.1]
Я преобразовал мой корпус из 5 .txt документов (романов) во фрейм данных с помощью следующей команды:
tbl <- list.files(pattern = "*.txt") %>%
map_chr(~ read_file(.)) %>%
data_frame(text = .)
Символы Unicode выглядят хорошо на 'tbl', но когда я запускаю функцию str_extract_all, они исчезают. Вот мой код:
uppercase <- sapply(str_extract_all(tbl, '(?<!^|\\.\\s|\\?\\s|\\!\\s)[A-Z][a-z]+'), paste)
Вот результат, который я получаю:
[1,] "For"
[2,] "Ant"
[3,] "Pati"
и т.п.
Когда следует читать:
[1,] "For"
[2,] "Antón"
[3,] "Patiño"
и т.п.
Это ошибка в stringr, или кто-нибудь испытывал подобное раньше? Любая помощь будет высоко ценится. Спасибо!
1 ответ
К сожалению класс персонажа [A-z]
(и его подмножества [A-Z]
, [a-z]
) не работает для специальных символов, таких как ñ
а также ó
, [[:alpha:]]
(буквенные символы) с другой стороны, кажется, работает.
stringr::str_extract_all(c("Antón", "Patiño"), '[A-z]+')
возвращает:
[[1]]
[1] "Ant" "n"
[[2]]
[1] "Pati" "o"
в то время как
stringr::str_extract_all(c("Antón", "Patiño"), '[[:alpha:]]+')
возвращает желаемый результат:
[[1]]
[1] "Antón"
[[2]]
[1] "Patiño"