首页 文章

替换字符串中的特定字符

提问于
浏览
217

我想从向量中的字符串中删除特定字符,类似于Excel中的“查找和替换”功能 .

以下是我开始的数据:

group <- data.frame(c("12357e", "12575e", "197e18", "e18947")

我从第一栏开始;我想通过删除 e 来生成第二列:

group       group.no.e
12357e      12357
12575e      12575
197e18      19718
e18947      18947

5 回答

  • 41

    使用正则表达式和函数 gsub()

    group <- c("12357e", "12575e", "197e18", "e18947")
    group
    [1] "12357e" "12575e" "197e18" "e18947"
    
    gsub("e", "", group)
    [1] "12357" "12575" "19718" "18947"
    

    gsub 在这里做的是用空字符串 "" 替换每个出现的 "e" .


    有关更多帮助,请参阅 ?regexpgsub .

  • 19

    正则表达式是你的朋友:

    R> ## also adds missing ')' and sets column name
    R> group<-data.frame(group=c("12357e", "12575e", "197e18", "e18947"))  )
    R> group
       group
    1 12357e
    2 12575e
    3 197e18
    4 e18947
    

    现在使用 gsub() 使用最简单的替换模式:空字符串:

    R> group$groupNoE <- gsub("e", "", group$group)
    R> group
       group groupNoE
    1 12357e    12357
    2 12575e    12575
    3 197e18    19718
    4 e18947    18947
    R>
    
  • 4

    总结了2种替换字符串的方法:

    group<-data.frame(group=c("12357e", "12575e", "197e18", "e18947"))
    

    1)使用 gsub

    group$group.no.e <- gsub("e", "", group$group)
    

    2)使用 stringr

    group$group.no.e <- str_replace_all(group$group, "e", "")
    

    两者都会产生欲望输出:

    group group.no.e
    1 12357e      12357
    2 12575e      12575
    3 197e18      19718
    4 e18947      18947
    
  • 333

    如果要替换字符串中的某些字符,则无需从字符串向量创建数据框 . 正则表达式是它的不错选择,因为@Andrie和@Dirk Eddelbuettel已经提到过它 .

    请注意,如果要替换特殊字符(如点),则应使用完整的正则表达式语法,如下例所示:

    ctr_names <- c("Czech.Republic","New.Zealand","Great.Britain")
    gsub("[.]", " ", ctr_names)
    

    这将产生

    [1] "Czech Republic" "New Zealand"    "Great Britain"
    
  • 6

    使用stringi包:

    require(stringi)
    
    group<-data.frame(c("12357e", "12575e", "197e18", "e18947"))
    stri_replace_all(group[,1], "", fixed="e")
    [1] "12357" "12575" "19718" "18947"
    

相关问题