Luk*_*uke 251 regex replace r string-substitution gsub
我想从向量中的字符串中删除特定字符,类似于Excel中的" 查找和替换"功能.
以下是我开始的数据:
group <- data.frame(c("12357e", "12575e", "197e18", "e18947")
Run Code Online (Sandbox Code Playgroud)
我从第一栏开始; 我想通过删除e's 来生成第二列:
group group.no.e
12357e 12357
12575e 12575
197e18 19718
e18947 18947
Run Code Online (Sandbox Code Playgroud)
And*_*rie 380
具有正则表达式和功能gsub():
group <- c("12357e", "12575e", "197e18", "e18947")
group
[1] "12357e" "12575e" "197e18" "e18947"
gsub("e", "", group)
[1] "12357" "12575" "19718" "18947"
Run Code Online (Sandbox Code Playgroud)
这gsub是"e"用空字符串替换每个出现的内容"".
请参阅?regexp或gsub获取更多帮助.
Dir*_*tel 45
正则表达式是你的朋友:
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
Run Code Online (Sandbox Code Playgroud)
现在使用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>
Run Code Online (Sandbox Code Playgroud)
Meg*_*ron 23
总结了2种替换字符串的方法:
group<-data.frame(group=c("12357e", "12575e", "197e18", "e18947"))
Run Code Online (Sandbox Code Playgroud)
1)使用 gsub
group$group.no.e <- gsub("e", "", group$group)
Run Code Online (Sandbox Code Playgroud)
2)使用stringr包装
group$group.no.e <- str_replace_all(group$group, "e", "")
Run Code Online (Sandbox Code Playgroud)
两者都会产生欲望输出:
group group.no.e
1 12357e 12357
2 12575e 12575
3 197e18 19718
4 e18947 18947
Run Code Online (Sandbox Code Playgroud)
使用stringi包:
require(stringi)
group<-data.frame(c("12357e", "12575e", "197e18", "e18947"))
stri_replace_all(group[,1], "", fixed="e")
[1] "12357" "12575" "19718" "18947"
Run Code Online (Sandbox Code Playgroud)
如果要替换字符串中的某些字符,则无需从字符串向量创建数据框.正则表达式是它的不错选择,因为@Andrie和@Dirk Eddelbuettel已经提到过它.
请注意,如果要替换特殊字符(如点),则应使用完整的正则表达式语法,如下例所示:
ctr_names <- c("Czech.Republic","New.Zealand","Great.Britain")
gsub("[.]", " ", ctr_names)
Run Code Online (Sandbox Code Playgroud)
这将产生
[1] "Czech Republic" "New Zealand" "Great Britain"
Run Code Online (Sandbox Code Playgroud)