Answers:
具有正则表达式和功能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
寻求更多帮助。
fixed=TRUE
阻止R使用正则表达式,从而允许更灵活的模式匹配,但需要花费一些时间进行计算。如果只需要除去单个常量字符串“ e”,则不需要它们。
sub("e", "", group)
保持相同的结果吗?
e
它在每个元素中找到的第一个
正则表达式是您的朋友:
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>
require(stringr);group$groupNoE <- str_replace(group$group, "e", "")
str_replace
wraps sub
,因此它将仅替换模式的第一次出现。str_replace_all
如果您想要与相同的行为,则需要使用gsub
。
总结了两种替换字符串的方法:
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
如果要替换字符串中的某些字符,则无需从字符串向量创建数据框。正则表达式是一个不错的选择,因为@Andrie和@Dirk Eddelbuettel已经提到过。
请注意,如果要替换特殊字符(如点),则应使用完整的正则表达式语法,如下例所示:
ctr_names <- c("Czech.Republic","New.Zealand","Great.Britain")
gsub("[.]", " ", ctr_names)
这将产生
[1] "Czech Republic" "New Zealand" "Great Britain"
gsub("\\.", " ", ctr_names)
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"
fixed = TRUE
会更快。