gsub无法为字符串工作-可能出问题的线索

时间:2019-03-02 14:13:58

标签: r gsub

我遇到的情况如下:

    > print(bob)
    [1] "Do not fall in love if you can’t handle pain"

当我尝试用gsub替换cant时,它不起作用:

    > gsub("can't", "can not", bob)
    [1] "Do not fall in love if you can’t handle pain"

但是,如果我仅用对象的内容替换它,它就可以正常工作:

    > gsub("can't", "can not", "Do not fall in love if you can't handle pain")
    [1] "Do not fall in love if you can not handle pain"

我真的很困惑,因为我想不出这两者之间的任何差异会导致其失败:

    > summary(bob); summary("Do not fall in love if you can't handle pain")
    Length     Class      Mode 
    1        character character 
    Length     Class      Mode 
    1        character character

变量bob源自数据帧,例如:

    bob <- dataframe$column[3]

所以我唯一的线索是它可能与数据框有关。

str_replace也发生同样的事情。如果您对造成此问题的原因有任何见解,请告诉我。

2 个答案:

答案 0 :(得分:0)

一些有用的评论员指出符号不匹配。 可以通过按住alt + 0146来键入正确的符号。 否则,在gsub函数中使用“ can.t”将匹配任何符号。

答案 1 :(得分:0)

您可以使用[[:punct:]]来匹配任何标点符号:

gsub("can[[:punct:]]t", "can not", bob)
# [1] "Do not fall in love if you can not handle pain"