我遇到了应该与重音符匹配的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"