我想从向量中的字符串中删除特定字符,类似于Excel中的“查找和替换”功能 .
以下是我开始的数据:
group <- data.frame(c("12357e", "12575e", "197e18", "e18947")
我从第一栏开始;我想通过删除 e 来生成第二列:
e
group group.no.e 12357e 12357 12575e 12575 197e18 19718 e18947 18947
使用正则表达式和函数 gsub() :
gsub()
group <- c("12357e", "12575e", "197e18", "e18947") group [1] "12357e" "12575e" "197e18" "e18947" gsub("e", "", group) [1] "12357" "12575" "19718" "18947"
gsub 在这里做的是用空字符串 "" 替换每个出现的 "e" .
gsub
""
"e"
有关更多帮助,请参阅 ?regexp 或 gsub .
?regexp
正则表达式是你的朋友:
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>
总结了2种替换字符串的方法:
group<-data.frame(group=c("12357e", "12575e", "197e18", "e18947"))
1)使用 gsub
group$group.no.e <- gsub("e", "", group$group)
2)使用 stringr 包
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"
使用stringi包:
require(stringi) group<-data.frame(c("12357e", "12575e", "197e18", "e18947")) stri_replace_all(group[,1], "", fixed="e") [1] "12357" "12575" "19718" "18947"
5 回答
使用正则表达式和函数
gsub()
:gsub
在这里做的是用空字符串""
替换每个出现的"e"
.有关更多帮助,请参阅
?regexp
或gsub
.正则表达式是你的朋友:
现在使用
gsub()
使用最简单的替换模式:空字符串:总结了2种替换字符串的方法:
1)使用
gsub
2)使用
stringr
包两者都会产生欲望输出:
如果要替换字符串中的某些字符,则无需从字符串向量创建数据框 . 正则表达式是它的不错选择,因为@Andrie和@Dirk Eddelbuettel已经提到过它 .
请注意,如果要替换特殊字符(如点),则应使用完整的正则表达式语法,如下例所示:
这将产生
使用stringi包: