无法识别的字符串值R
我有一个字符串向量,其中一些值是用越南语编码的UTF-8编码。无法识别的字符串值R
> 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] " "
我想删除它包含了最后两个值的另一种载体:“泉LY,điều禅师湾”和“”。但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
我复制的问题在于字符串( “全LY,điều禅师托架”),以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(文件,标题= FALSE,九月= “”,帖= “\”'“, 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 = “”,编码= “未知”,文本,skipNul = FALSE)
所以,你可以明确地设置编码为 “函数read.table中的UTF-8”。
我已经改变了UTF-8和native.enc之间的编码(我认为它是R中的默认编码),但结果仍然相同。我从一个docx文件中读取了这个数据,并且根据这个[link](https://rud.is/b/2015/08/23/using-r-to-get-data-out- of-word-docs /)但我认为我的功能不是问题,因为它与这些值本身无关。 –
你能否执行Encoding(x)函数,其中x是包含字符串的对象?什么是输出?顺便说一下,我正在检查xml2包的编码选项。 –
从read_xml的手册页:read_xml(x,encoding =“”,...,as_html = FALSE,options =“NOBLANKS”)。如果你使用过,你是否在你的函数中设置了编码? –
使用charToRaw检查原始字节。最后一个向量中可能有多个空格,第10个向量周围的extraspaces可能不会显示出来。也可以使用trimws去除空格 – infominer
对“”值使用chartoRaw给出结果c2 a0。我应该从中学到什么? –
使用系统调用从R到八进制转储,您还可以看到使用此命令在对象中是否存在任何非ascii字符:'system(sprintf(“echo%s | od -c”,so_wrong [11]))' –