我有一个字符串向量,其中一些值是越南语,用UTF-8编码。
> so_wrong
[1] "Thiết bị & dịch vụ" "Quản lý"
[3] "Hãng" "Thời tiết"
[5] "Lý do khác" "Tàu bay về muộn"
[7] "Kỹ thuật" "Thương mại"
[9] "Khai thác" "Quản lý, điều hành bay"
[11] " "
我想删除另一个包含最后两个值的向量:“Quảnlý,điềuhànhbay”和“”。但是R不承认它们。
> any(so_wrong == " ")
[1] FALSE
> any(so_wrong == "Quản lý, điều hành bay")
[1] FALSE
...即使通过这些命令输入的值正好是向量中的值(我将它们复制粘贴)。另一方面,这项工作:
> any(so_wrong == so_wrong[11])
[1] TRUE
问题是什么以及如何解决/解决问题?
编辑:编码
> Encoding(so_wrong)
[1] "UTF-8" "UTF-8" "latin1" "UTF-8" "UTF-8" "UTF-8" "UTF-8"
[8] "UTF-8" "latin1" "UTF-8" "UTF-8"
编辑:我将矢量保存到csv并将其推送到here
答案 0 :(得分:3)
我将那个有问题的字符串(“Quảnlý,điềuhànhbay”)复制到R,分配给一个对象,检查逻辑是否相等而且没问题。
> so_wrong <- "Quản lý, điều hành bay"
> so_wrong == "Quản lý, điều hành bay"
[1] TRUE
我认为问题在于您的编码选项。你可以尝试两件事:
明确地将编码选项设置为utf-8:
选项(编码= “UTF-8”)
顺便说一下,我的编码选项是“native.enc”
> getOption("encoding")
[1] "native.enc"
你也可以尝试一下。
read.table(file,header = FALSE,sep =“”,quote =“\”'“, dec =“。”,数字= c(“allow.loss”,“warn.loss”,“no.loss”), row.names,col.names,as.is =!stringsAsFactors, na.strings =“NA”,colClasses = NA,nrows = -1, skip = 0,check.names = TRUE,fill =!blank.lines.skip, strip.white = FALSE,blank.lines.skip = TRUE, comment.char =“#”, allowEscapes = FALSE,flush = FALSE, stringsAsFactors = default.stringsAsFactors(), fileEncoding =“”, encoding =“unknown”,text,skipNul = FALSE)
因此,您可以在read.table中将编码显式设置为“utf-8”。