Я пытаюсь использовать as.character () в функции gsub, чтобы заменить «альфа» с символом «α» в R - PullRequest
0 голосов
/ 27 июня 2018
    if((grep("alpha",userinput,fixed = TRUE))){
        userinput<- gsub("alpha|Alpha",as.character("\U03B1"),userinput)
      }

печатает «Î ±» вместо «α». И используя

userinput<- gsub("alpha|Alpha","α",userinput)

печатает "а". Что я могу сделать, чтобы получить «α».

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Работает, если установить кодировку вручную:

userinput <- "mm is such an alpha male !!!"
x <- gsub("alpha|Alpha","\u03B1",userinput)
x
# [1] "mm is such an α male !!!"
Encoding(x) <- "UTF-8"
x
# [1] "mm is such an α male !!!"

Вы могли бы подумать, что установки кодировки на userinput будет достаточно, но это не так, gsub не имеет никакого отношения.

Имея дело с адом кодирования, управляйте кодированием каждого ввода и переменной на каждом шаге и никому не доверяйте. Лично у меня были ужасные проблемы даже с выдающимися пакетами для анализа текста.

0 голосов
/ 28 июня 2018

Я также вижу проблему с gsub. Альтернативным решением может быть использование stringr::str_replace, так как оно работает для меня.

library(stringr)

str_replace("My name is alpha", pattern = "alpha|Alpha", as.character("\U03B1"))

#[1] "My name is α"

str_replace("My name is Alpha", pattern = "alpha|Alpha", as.character("\U03B1"))
#[1] "My name is α"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...