Подтвердить что ты не робот

Как отделить знаки доллара ($) от данных/исключить специальные символы в R?

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

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

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

4b9b3361

Ответ 1

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

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

Подробнее о цитировании и экранировании см. ?Quotes.

Ответ 2

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

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

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

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

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

Ответ 3

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

> gsub("[$]","",c("$100","ta$ty"))
[1] "100"  "taty"