粘贴由电话号码组成的字符串时的奇怪行为

时间:2019-01-05 14:05:33

标签: r stringr

我已经从WhatsApp聊天中提取了数据(df),并建立了一个名为name的变量。现在,在某些情况下,我没有名字,但有电话号码。

因此,在下一步中,我尝试为每个数字分配一个名称。现在,R显示了一种奇怪的行为(对不起,我对此没有其他名称):

当我在控制台中键入which(df$name=="‪+49 176 12345678‬")时,R会以某种方式将其更改为which(df$name=="*+49 176 12345678,")(然后,当然找不到该数字的任何实例)。同时,似乎还有一个“看不见的空间”:当我的光标直接位于“ 8”的右边并按退格键时,“ 7”将被删除。

如果这有帮助:在查看变量(View(df$name))时,R不会显示+49 176 12345678‬之类的数字,而是显示<U+202A>+49 176 12345678‬<U+202C>。但是,当使用(例如)``table(df $ name)`时,这些Unicode控制字符不会出现。

1 个答案:

答案 0 :(得分:2)

尝试使用此处建议的方法剥离非ASCII字符:gist.github.com/nassimhaddad/4643587。如您所确定的,看来您遇到的问题是字符串中有一些隐藏的字符。他们正在创造各种奇怪的行为。运行df$text <- gsub("[^\x20-\x7E]", "", df$text)将删除字符串中的非ASCII字符,并且只剩下显示在屏幕上的数字和字符。