2012-08-15 81 views
5

我有一個包含字符串「Energy per m」的矩陣。 在'm'是一個帶有問號的菱形符號之前 - 我不知道它是什麼。R刪除數據幀中的特殊字符

我試圖擺脫它使用該對矩陣的列:

a=gsub('Energy per �m','',a) 

[和使用複製/粘貼的GSUB的第一項],但它不工作[。在「A =代表(5,每能源」]意想不到的符號。當我嘗試提取從原來的矩陣grepl東西,我得到:?

46: In grepl("ref. value", raw$parameter) : 
input string 15318 is invalid in this locale 

我怎樣才能擺脫所有這種跡象的我想要只有0-9,AZ,az,/和'。其餘的可以被刪除。

+2

使用'iconv'第一('的iconv? ') – dickoa 2012-08-15 14:18:24

回答

18

這樣做可能比使用正則表達式更好。通過更改Encoding)。

但這裏是你的正則表達式的解決方案:

gsub("[^0-9A-Za-z///' ]", "", a) 
[1] "Energy per m" 

但是,正如@JoshuaUlrich指出的那樣,你最好使用:

gsub("[^[:alnum:]///' ]", "", x) 
[1] "Energy per m" 
+14

'[^ [:alnum:]]'優於'[^ 0-9A-Za-z]'。關於後者,「?regex」說「因爲他們的解釋是語言環境和實現相關的,所以最好避免。」和「例如,'[[:alnum:]]'表示'[0-9A-Za-z]',除了後者依賴於語言環境和字符編碼,而前者獨立於語言環境和字符集。 「 – 2012-08-15 14:37:03

+0

@JoshuaUlrich頂部提示。回答編輯,謝謝。 – Andrie 2012-08-15 14:50:12

+4

謝謝。我只知道從Ripley'd在包裝中使用你的第一個解決方案。 ;-) – 2012-08-15 15:02:10