我有一个Excel文件,我在R中导入,感谢
read.csv2('~/My/File/place.csv',sep=";")
有些单元格有逗号,当我尝试将它们与R studio中的特定值进行比较时,我有一些非常奇怪的行为,如:
> "‚"==","
[1] FALSE
或
> "‚"%in%","
[1] FALSE
通过复制/粘贴上一个例子,您可以正常地看到同样的事情发生。
当然,当我尝试使用未导入的数据进行此类测试时,我不会遇到任何问题。
有谁知道为什么会发生这种事情,以及是否有办法解决这个问题?
答案 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