переключить строку с не соответствующим акцентом - PullRequest
0 голосов
/ 06 декабря 2018

У меня проблемы с оператором switch, который должен соответствовать персонажу с ударением.Строка символов, которую я хочу сопоставить, взята из вектора (data $ ttx), а сам он взят из таблицы Excel, прочитанной с openxlsx.

> head(data$ttx)
[1] "Autorisé" "Autorisé" "Autorisé" "Autorisé" "Interdit" "Autorisé"

Вот воспроизведение моей проблемы:

> x = data$ttx[1]
> switch(x, "oui" =, "Autorisé" = TRUE, "non" =, "Interdit" = FALSE, x)
#this doesn't work, it returns "Autorisé", the default statement

Но если я сделаю:

> x = "Autorisé"
> switch(x, "oui" =, "Autorisé" = TRUE, "non" =, "Interdit" = FALSE, x)
#this works, it returns TRUE

Я предполагаю, что это из-за акцентав строке, потому что для других случаев ("OUI", "Non", "Interdit") это работает нормально.Я думаю, что извлечение из Excel дало невидимую разницу между строками символов в моем векторе, по сравнению со строками, написанными непосредственно в R. Проблема, кажется, весьма специфична для функции switch, потому что если я попытаюсь:

> data$ttx[1] == "Autorisé"
#this returns TRUE

Знаете ли вы об этой проблеме?У вас есть способ обойти это?

РЕДАКТИРОВАТЬ: Больше информации:

> dput(head(data$ttx))
c("Autorisé", "Autorisé", "Autorisé", "Autorisé", "Interdit", "Autorisé")
> Encoding(head(data$ttx))
[1] "UTF-8"   "UTF-8"   "UTF-8"   "UTF-8"   "unknown" "UTF-8" 
...