2017-08-11 53 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