【发布时间】:2017-05-13 03:48:02
【问题描述】:
我有一个字符串向量,其中一些值是越南语,用 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ản lý, điều hành bay”和“”。但 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
【问题讨论】:
-
使用 charToRaw 检查原始字节。最后一个向量中可能有多个空格,而第 10 个向量周围的多余空格可能不会显示。也可以使用 trimws 去除空格
-
在 " " 值上使用 chartoRaw 给我结果 c2 a0 。我应该从中学到什么?
-
您还可以使用从 R 到八进制转储的系统调用使用此命令查看对象中是否有任何非 ascii 字符:
system(sprintf("echo %s | od -c", so_wrong[11]))
标签: r