我想从向量中的字符串中删除特定字符,类似于Excel中的查找和替换功能。
以下是我开始时的数据:
group <- data.frame(c("12357e", "12575e", "197e18", "e18947")
我从第一列开始;我想通过去掉e来得到第二列:
group group.no.e
12357e 12357
12575e 12575
197e18 19718
e18947 18947
我想从向量中的字符串中删除特定字符,类似于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"