2017-08-11 78 views
0

獨特的法律符號我要清理字符串,使他們能夠解析爲唯一合法的符號。我打算清理很多字符串,因此在輸出中存在重複符號的不良風險。採取每個非法字符並用其基本32編碼取代它就足夠了。所需的行爲:消毒字符串中的R

sanitize("_bad_symbol$not*a&list%$('") 
## [1] "L4bad_symbolEQnotFIaEYlistEUSCQJY" 

我想我需要的是可能的字符grep的完整列表。我知道lettersLETTERS,但對於一切?

做一個更好的解決方案已經存在?因爲我會喜歡這個。

編輯:剛剛發現約make.names()this post。我可以用這種方式去解決問題,但我寧願不要。

+0

*「做一個更好的解決方案已經存在,是因爲我喜歡這一點。」 *似乎矛盾*「我可以用['make.names']走在緊要關頭,但我寧可不要。」 *關於'make.names'的不滿意?也許你可以修改'make.names'的代碼來滿足你的需求? – Gregor

+0

你說得對。我固定在一個不同的解決方案上。剛剛找到'make.unique()','make.unique(make.names(...))'實際上很好地解決了這個問題。 – landau

+0

'make.names()'單獨將引入衝突。這是令人不滿意的一點。 – landau

回答

0

隨着make.names()make.unique()在一起,問題就解決了。

make.unique(make.names(c("asdflkj#@#$", "asdflkj####"))) 
## [1] "asdflkj...." "asdflkj.....1" 
+0

另外:'make.names(...,獨特= TRUE)'。剛剛瞭解到這一點。 – landau