【问题标题】:Multiple string replacement, using gsubfn() in R多个字符串替换,在 R 中使用 gsubfn()
【发布时间】:2015-12-08 13:07:45
【问题描述】:

我要更换:

(1) ", "(逗号+空格)和"_"(下划线)

(2) "'"(撇号)和"'s"(撇号+s)

library(gsubfn)
x <- c("Mary' car is red.", "A, B, C")
gsubfn(".", list(", " = "_", "'" = "'s"), x)

我想要的是"Mary's car is red.""A_B_C",但结果是"Mary's car is red.""A, B, C"。为什么?

【问题讨论】:

    标签: r string gsub


    【解决方案1】:

    试试这个:

    toreplace<-list(", " = "_", "'" = "'s")
    gsubfn(paste(names(toreplace),collapse="|"),toreplace,x)
    #[1] "Mary's car is red." "A_B_C"
    

    您的方法的问题在于您的模式只是一个字符 (.),无法匹配 ", "

    【讨论】:

      【解决方案2】:
      x <- c("Mary' car is red.", "A, B, C")
      
      l <- list(r1 = c("'","'s"),
                r2 = c(', ','_'))
      
      gsub2 <- function(l, x, ...)
        do.call('gsub', c(list(x = x, pattern = l[1], replacement = l[2]), ...))
      Reduce('gsub2', l, x, right = TRUE)
      # [1] "Mary's car is red." "A_B_C"             
      

      或更多

      l <- list(r1 = c("'","'s"),
                r2 = c(', ','_'),
                r3 = c('M', 'Mmmm'),
                r4 = c('\\br', 'rrrr'),
                r5 = c('\\.', '!!!'))
      
      Reduce('gsub2', l, x, right = TRUE)
      # [1] "Mmmmary's car is rrrred!!!" "A_B_C"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-29
        • 1970-01-01
        • 2015-03-30
        • 2015-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-30
        相关资源
        最近更新 更多