Я хотел бы удалить определенные символы из строк в векторе, аналогично функции поиска и замены в Excel.
Вот данные, с которых я начинаю:
group <- data.frame(c("12357e", "12575e", "197e18", "e18947")
Я начинаю только с первого столбца; Я хочу создать второй столбец, удалив e
:
group group.no.e
12357e 12357
12575e 12575
197e18 19718
e18947 18947
fixed = TRUE
сделает это быстрее.fixed=TRUE
не позволяет R использовать регулярные выражения, которые позволяют более гибко сопоставлять шаблоны, но требуют времени для вычислений. Если все, что нужно, это удалить одну постоянную строку «е», они не нужны.sub("e", "", group)
держать тот же результат?e
найденный в каждом элементеРегулярные выражения ваших друзей:
Теперь используйте
gsub()
самый простой шаблон замены: empty string:источник
require(stringr);group$groupNoE <- str_replace(group$group, "e", "")
str_replace
обертыванияsub
, поэтому он заменит только первое вхождение шаблона. Вам нужно будет использовать,str_replace_all
если вы хотите такое же поведение, какgsub
.Обобщая 2 способа замены строк:
1) Использование
gsub
2) Используйте
stringr
пакетОба будут производить вывод желания:
источник
Вам не нужно создавать фрейм данных из вектора строк, если вы хотите заменить некоторые символы в нем. Регулярные выражения - хороший выбор для этого, поскольку это уже упоминалось @Andrie и @Dirk Eddelbuettel.
Обратите внимание: если вы хотите заменить специальные символы, такие как точки, вы должны использовать полный синтаксис регулярного выражения, как показано в примере ниже:
это будет производить
источник
gsub("\\.", " ", ctr_names)
Используйте пакет stringi :
источник
источник