我最近收到了一个未知来源的excel文件(并使用excel将一个子集输出到文本文件" example0.txt"(参见下面的dropbox链接)。在此数据集中,出现两个字符串无论如何都是平等的,不能用R来比较。
a<-scan("example0.txt", what="raw")
a
[1] "ÖSTVÅG" "FALKVÅG" "ÖSTVÅG"
# cell a[1] and a[3] appear similar ("ÖSTVÅG"). However,
a[1]==a[3] # I was expecting TRUE but I get FALSE
nchar(a[1]) == nchar(a[3]) # I was expecting TRUE (n=6) but I get FALSE
# and similarly,
nchar(a[2]) == 8 # I was expecting n=7
查看dropbox中的文件: https://www.dropbox.com/sh/hz6vsj5kj1u9ag6/AACtTMh-x4IIB10kMCUE5rvBa?dl=0
这种行为确实使我正在处理的更大数据集上的匹配字符串变得复杂,更不用说将要进入的更新数据集。
最初我怀疑它与Encodings有关,但我尝试用不同的编码读取数据并在R中执行转换,但我仍然得到相同的结果。
我设法通过在记事本中打开文件并重新编写a [3]来解决问题,之后重新保存文件,我很惊讶它现在可以正常工作(你可以看到example0correct中的结果。文本)。即使新文件看起来与原始文件相同。
任何人都可以解释我发生了什么,以及如何以example0为起点来检测和纠正这种情况?
注意:不知道是否重要,但我在安装了Office 2013的Windows 7机器中使用R 3.2.2。