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

以下是我开始时的数据:

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

我从第一列开始;我想通过去掉e来得到第二列:

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

当前回答

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

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

gsub("e", "", group)
[1] "12357" "12575" "19718" "18947"

gsub在这里所做的是将每次出现的“e”替换为空字符串“”。


参见regexp或gsub以获得更多帮助。

其他回答

> library(stringi)                
> group <- c('12357e', '12575e', '12575e', ' 197e18',  'e18947')              
> pattern <- "e"  
> replacement <-  ""  
> group <- str_replace(group, pattern, replacement)      
> group 
[1] "12357"  "12575"  "12575"  " 19718" "18947" 

使用stringi包:

require(stringi)

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

你也可以使用chartr:

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

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

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

gsub("e", "", group)
[1] "12357" "12575" "19718" "18947"

gsub在这里所做的是将每次出现的“e”替换为空字符串“”。


参见regexp或gsub以获得更多帮助。

你不需要从字符串向量创建数据帧,如果你想替换其中的一些字符。正则表达式是一个很好的选择,因为它已经被@Andrie和@Dirk Eddelbuettel提到过。

注意,如果你想替换特殊字符,比如点,你应该使用完整的正则表达式语法,如下例所示:

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

这将产生

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