在R中,replacestring中的文本

我想从vector中的string中删除特定的字符,类似于Excel中的“ 查找和replace”function。

这里是我开始的数据:

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

我从第一列开始, 我想通过删除e来产生第二列:

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

用正则expression式和函数gsub()

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

gsub在这里做的是用空string""replace每个"e"出现。


请参阅?regexpgsub获取更多帮助。

正则expression式是你的朋友:

 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 

现在用最简单的replace模式使用gsub() :空string:

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

总结2种replacestring的方法:

 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 

如果要replacestring中的某些字符,则不需要从string向量创builddataframe。 正则expression式是不错的select,因为它已经被@Andrie和@Dirk Eddelbuettel提及。

请注意,如果要replace特殊字符(如圆点),则应使用完整的正则expression式语法,如下面的示例所示:

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

这会产生

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

使用stringi包:

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