2012-08-15 49 views
5

से विशेष वर्ण हटाएं मेरे पास एक मैट्रिक्स है जिसमें "ऊर्जा प्रति m" स्ट्रिंग है। 'एम' इससे पहले एक हीरे के आकार का प्रतीक है जिसमें एक प्रश्न चिह्न है - मुझे नहीं पता कि यह क्या है।आर डेटा फ्रेम

मैं मैट्रिक्स के स्तंभ पर इस का उपयोग करके इसे से छुटकारा पाने की कोशिश की है:

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

[और gsub के पहले कार्यकाल के लिए कॉपी/पेस्ट का उपयोग कर], लेकिन यह काम नहीं करता है [। में "एक = प्रतिनिधि (5, प्रति ऊर्जा"] अप्रत्याशित प्रतीक जब मैं grepl के साथ मूल मैट्रिक्स से कुछ निकालने के लिए कोशिश मैं:।?

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

मैं कैसे संकेत के सभी इस तरह से छुटकारा पा सकते मैं केवल 0-9, एजेड, एजे,/और 'होना चाहिए। बाकी को ज़ेड किया जा सकता है।

+2

उपयोग 'iconv' पहले (' iconv:

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

लेकिन, जैसा कि @JoshuaUlrich से कहा, आप का उपयोग करने के लिए बेहतर कर रहे हैं ' – dickoa

उत्तर

18

शायद रेगेक्स के साथ ऐसा करने का एक बेहतर तरीका है (उदा। Encoding को बदलकर)।

लेकिन यहाँ अपने regex समाधान है:

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

' [^ [: alnum:]] 'को' [^ 0-9 ए-ज़ा-जेड] 'के लिए प्राथमिकता दी जाती है। उत्तरार्द्ध के बारे में, 'रेगेक्स' कहता है "क्योंकि उनकी व्याख्या लोकेल- और कार्यान्वयन-निर्भर है, वे सबसे अच्छी तरह से बचाए जाते हैं।" और "उदाहरण के लिए, '[[: alnum:]]' का अर्थ है '[0-9 ए-ज़ा-जेड]', बाद वाले को लोकेल और चरित्र एन्कोडिंग पर निर्भर करता है, जबकि पूर्व लोकेल और चरित्र सेट से स्वतंत्र है। " –

+0

@ जोशुआउलिच टॉप टिप। उत्तर संपादित, धन्यवाद। – Andrie

+4

धन्यवाद। मुझे केवल इतना पता है कि पैकेज में अपना पहला समाधान उपयोग करने के लिए रिपलीड होने से। ;-) –

संबंधित मुद्दे