无法得到R来比较看似相等的字符串

时间:2016-01-12 12:27:52

标签: r excel encoding string-matching

我最近收到了一个未知来源的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。

0 个答案:

没有答案