R无法识别的字符串值

时间:2016-12-28 20:24:08

标签: r

我有一个字符串向量,其中一些值是越南语,用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

1 个答案:

答案 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的手册页:
  

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”。