Заменить определенные символы в строках

Я хотел бы удалить определенные символы из строк в векторе, аналогично функции "Найти и заменить" в 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"