重音不匹配的切换字符串

时间:2018-12-06 10:23:55

标签: r encoding switch-statement

我遇到了应该与重音符匹配的switch语句的麻烦。我要匹配的字符串来自矢量(data $ ttx),他自己来自用openxlsx读取的Excel工作表。

> 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”),它可以正常工作。我的猜测是,与直接用R语言编写的字符串相比,从excel中提取的字符串给我的向量中的字符串带来了无形的差异。问题似乎很特定于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" 

0 个答案:

没有答案