Как убрать знаки доллара ($) из данных / экранировать специальные символы в R? - PullRequest
24 голосов
/ 10 июля 2011

Я использовал gsub("toreplace","replacement", myvector) для очистки данных в R. Хотя это работает для запятых и т.п., удаление "$" не имеет никакого эффекта.Поэтому, если я сделаю gsub("$","",myvector), все знаки доллара останутся на месте.

Я думаю, это потому, что $ - это специальный символ в R. Я пытался избежать его "\$", но это дает тот же результатнет эффекта).И я не смог найти ресурс по экранированию специальных символов в R.

Очевидно, что я должен сделать это при предварительной обработке.Но мне было интересно, знает ли кто-нибудь, как: а) экранировать специальные символы в R б) избавиться от надоедливых $ в R напрямую.Для науки.

Ответы [ 3 ]

28 голосов
/ 10 июля 2011

Вы должны избежать этого дважды, сначала для R, затем для регулярного выражения.

gsub('\\$', '', c("a$a", "bb$"))
[1] "aa" "bb"

См. ?Quotes для подробностей о цитировании и экранировании.

19 голосов
/ 10 июля 2011

Используйте fixed = TRUE:

gsub('$', '', c("a$a", "bb$"), fixed = TRUE)

Тогда вам не нужно беспокоиться о каких-либо специальных символах.В stringr это реализовано немного по-другому:

library(stringr)
str_replace_all(c("$100","ta$ty"), fixed("$"), "")

Спасибо DiggyF и Джеймсу за примеры!

12 голосов
/ 10 июля 2011

Иногда убегать от символов может быть больно, но простое помещение его в квадратные скобки (сделайте его классом персонажа) помогает в этом:

> gsub("[$]","",c("$100","ta$ty"))
[1] "100"  "taty"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...