2011-07-10 37 views
17

我一直在使用gsub("toreplace","replacement", myvector)來清理R中的數據。雖然這適用於逗號等,但刪除"$"不起作用。所以如果我做gsub("$","",myvector)所有的美元符號仍然存在。

我認爲這是因爲$是R中的一個特殊字符。我試圖轉義它"\$"但產生相同的結果(沒有效果)。而且我找不到R中的特殊字符。

很顯然,我應該在預處理中執行此操作。但我想知道是否有人知道如何a)在R中逃避特殊字符b)直接在R中擺脫討厭的$。對於科學。

回答

11

轉義字符可以是一個痛苦有時,但只是把它放在方括號(使它成爲一個字符類)有助於這一點:

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

你要逃避它兩次,第一次爲R,第二爲正則表達式。

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

有關引用和轉義的詳細信息,請參閱?Quotes

13

使用fixed = TRUE

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

那麼你就不需要擔心任何特殊字符。在stringr,這是實現方式略有不同:

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

感謝DiggyF和詹姆斯的例子!

+0

我知道我應該更仔細地閱讀?gsub。謝謝! – araneae