从csv2逗号导入数据不等于RStudio逗号

时间:2016-07-12 17:00:58

标签: r csv

我有一个Excel文件,我在R中导入,感谢

read.csv2('~/My/File/place.csv',sep=";")

有些单元格有逗号,当我尝试将它们与R studio中的特定值进行比较时,我有一些非常奇怪的行为,如:

> "‚"==","
[1] FALSE

> "‚"%in%","
[1] FALSE

通过复制/粘贴上一个例子,您可以正常地看到同样的事情发生。

当然,当我尝试使用未导入的数据进行此类测试时,我不会遇到任何问题。

有谁知道为什么会发生这种事情,以及是否有办法解决这个问题?

1 个答案:

答案 0 :(得分:1)

看起来像逗号的左手表达式实际上是single low-9 quotation mark in Unicode。复制&从上面的内容中粘贴,我们可以检查原始位:

xx <- c(LHS = "‚", RHS = ",")

charToRaw(xx[1])
#[1] e2 80 9a

charToRaw(xx[2])
#[1] 2c

charToRaw(",")  ## typed in manually
#[1] 2c  

从Unicode重新创建这些,

(yy <- c(LHS = "\U201A", RHS = "\U002C"))
#LHS RHS 
#"‚" ","  

xx[1] == yy[1]
# LHS 
#TRUE 

xx[2] == yy[2]
# RHS 
#TRUE 

至于解决这个问题,我不确定是否有一个简单的解决方案,因为您的计算机不理解这些符号看起来很相似,也不希望它们都被视为逗号。不过,我建议您扫描数据中的非ASCII字符作为起点。此功能取自?raw帮助文件:

isASCII <-  function(txt) all(charToRaw(txt) <= as.raw(127))
sapply(xx, isASCII)
#  LHS   RHS 
#FALSE  TRUE