У меня проблемы с оператором 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"