Символы 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"
Другие вопросы по тегам