【问题标题】:gsub (r) not replacing pattern"S+U " [duplicate]gsub(r)不替换模式“S + U” [重复]
【发布时间】:2021-07-26 06:56:39
【问题描述】:

我正在尝试使用 for 循环纠正字符串向量,这个特定的向量不起作用

gsub("S+U ", "t",  "S+U S+U lag") 

我也尝试使用 grepl,它检测到 S+、+U,但使用 S+U 不起作用。有人知道为什么会这样吗?

【问题讨论】:

    标签: r string gsub


    【解决方案1】:

    我们可以将fixed 用作TRUE,因为+ 是一个或多个的元字符。因此,在正则表达式模式下,它将搜索一个或多个“S”,后跟一个 U。使用 fixed = TRUE 或转义 (\\+) 进行逐字计算

    gsub("S+U ", "t",  "S+U S+U lag", fixed = TRUE) 
    

    【讨论】:

    • 成功了,非常感谢
    • @hmarcial 请考虑查看here
    【解决方案2】:

    你应该通过\\+逃脱+

    > gsub("S\\+U ", "t", "S+U S+U lag")
    [1] "ttlag"
    

    或者您可以启用fixed = TRUE

    > gsub("S+U ", "t", "S+U S+U lag", fixed = TRUE)
    [1] "ttlag"
    

    【讨论】:

    • 这个答案提供了一个解释(根据 OP 的要求)和两个解决方案。
    • @Limey akrun 给出了详细的解释,而不是我。
    • 他编辑了他的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 2014-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-07
    相关资源
    最近更新 更多