Заменить определенные символы в строках
Я хотел бы удалить определенные символы из строк в векторе, аналогично функции "Найти и заменить" в Excel.
Вот данные, которые я начинаю с:
group <- data.frame(c("12357e", "12575e", "197e18", "e18947")
Я начинаю только с первой колонки; Я хочу создать второй столбец, удалив e
's:
group group.no.e
12357e 12357
12575e 12575
197e18 19718
e18947 18947
Ответы
Ответ 1
С регулярным выражением и функцией 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
.
Ответ 2
Регулярные выражения - ваши друзья:
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>
Ответ 3
Подводя итог 2 способам замены строк:
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
Ответ 4
Вам не нужно создавать кадр данных из вектора строк, если вы хотите заменить некоторые символы в нем. Регулярные выражения - это хороший выбор для него, как это уже упоминалось @Andri и @Dirk Eddelbuettel.
Обратите внимание, если вы хотите заменить специальные символы, например точки, вы должны использовать полный синтаксис регулярных выражений, как показано в примере ниже:
ctr_names <- c("Czech.Republic","New.Zealand","Great.Britain")
gsub("[.]", " ", ctr_names)
это произведет
[1] "Czech Republic" "New Zealand" "Great Britain"
Ответ 5
Используйте stringi пакет:
require(stringi)
group<-data.frame(c("12357e", "12575e", "197e18", "e18947"))
stri_replace_all(group[,1], "", fixed="e")
[1] "12357" "12575" "19718" "18947"
Ответ 6
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"