2011-07-10 6 views
17

Używam gsub("toreplace","replacement", myvector) do czyszczenia danych w R. Chociaż działa to w przypadku przecinków i tym podobnych, usunięcie "$" nie daje żadnego efektu. Więc jeśli mam gsub("$","",myvector) wszystkie znaki dolara pozostają na swoim miejscu.

Myślę, że to dlatego, że $ jest specjalną postacią w R. Próbowałem uciekać to "\$", ale to daje taki sam wynik (bez efektu). I nie mogłem znaleźć zasobu na unikanie znaków specjalnych w R.

Oczywiście powinienem to zrobić w preprocessingu. Ale zastanawiałem się, czy ktoś tam wie, jak albo a) uciec od znaków specjalnych w R b) pozbyć się brzydkiego $ w R bezpośrednio. Dla nauki.

Odpowiedz

11

Ucieczki znaków może być ból kilka razy, ale tylko wprowadzenie go w nawiasach kwadratowych (sprawiają, że klasa znaków) pomaga z tym:

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

trzeba uciec go dwukrotnie, najpierw dla R, drugi dla regex.

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

Aby uzyskać szczegółowe informacje na temat cytowania i ucieczki, patrz: ?Quotes.

13

Zastosowanie fixed = TRUE:

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

Wtedy nie trzeba się martwić o jakichkolwiek znaków specjalnych. W stringr ten realizowany jest trochę inaczej:

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

Dzięki DiggyF i Jakuba w przykładach!

+0

Wiedziałem, że powinienem uważniej przeczytać gsub. Dzięki! – araneae

Powiązane problemy