2012-04-09 7 views
7

एस्केप वर्ण, आर में मुसीबत का एक बहुत का कारण के रूप में पिछले प्रश्न इसका सबूत:निकालें एक तार से भाग जाती है, या, "मैं कैसे रास्ते से बाहर मिल सकता है?"

  1. Change the values in a column
  2. Can R paste() output "\"?
  3. Replacing escaped double quotes by double quotes in R
  4. How to gsub('%', '\%', ... in R?

इन पिछले प्रश्न से कई हो सकता है "मैं अपने रास्ते से कैसे बाहर निकल सकता हूं?" के विशेष मामलों के लिए सरलीकृत

वहाँ यह करने के लिए एक आसान तरीका है?

उदाहरण के लिए, मैं gsub करने के लिए कोई तर्क है कि निम्न से सभी बच निकाल देंगे पा सकते हैं:

test <- c('\01', '\\001') 
+0

'\ 0' नुल स्ट्रिंग है। आर ने कुछ संस्करणों के लिए स्ट्रिंग में उन लोगों की अनुमति नहीं दी है। आप किस संस्करण का उपयोग कर रहे हैं? –

+0

@ जोश: 2.14। "\ 0" से "0" निकालने का कोई तरीका नहीं है? –

+0

बस स्पष्ट होना: आप के सभी उदाहरणों निकालना चाहते हैं "\?" जहां "\" शब्दशः लिया जाता है और "?" किसी भी चरित्र का मतलब है? या आप बस "\\" के अलावा "\" के सभी उदाहरणों को पट्टी करना चाहते हैं? मैं अभी भी रेगेक्स निर्माण के साथ जाऊंगा '[\\] {1,} '। संपादित करें: हेक, यहाँ संपादन के लिए पार्सर भी गड़बड़ हो जाता है :-( –

उत्तर

8

कठिनाई यहाँ, कि "\1" है, हालांकि यह दो ग्लिफ़ के साथ मुद्रित है आर के विचार में, वास्तव में है एक एकल चरित्र

nchar("\1") 
# [1] 1 
nchar("\001") 
# [1] 1 
identical("\1", "\001") 
# [1] TRUE 

तो, आप सामान्य निकालने में कर सकते हैं सब कुछ इस तरह के साथ बैकस्लैश:: और वास्तव में, यह "\001" और "\01" के रूप में बहुत ही चरित्र है

(test <- c("\\hi\\", "\n", "\t", "\\1", "\1", "\01", "\001")) 
# [1] "\\hi\\" "\n"  "\t"  "\\1" "\001" "\001" "\001" 
eval(parse(text=gsub("\\", "", deparse(test), fixed=TRUE))) 
# [1] "hi" "n" "t" "1" "001" "001" "001" 

लेकिन, जैसा कि आप देख सकते हैं , "\1", "\01", और \001" सब, 001 के रूप में प्रदान किया जाएगा (के बाद से आर करने के लिए वे "\001" के लिए सब सिर्फ अलग अलग नाम हैं)।


संपादित: भागने दृश्यों में "\" के उपयोग पर अधिक जानकारी के लिए, और कहा कि उन्हें प्रयोग किया जा सकता है वर्णों की महान विविधता (अनुमति नहीं नुल स्ट्रिंग एक टिप्पणी में यहोशू उलरिच से ऊपर उल्लेख किया है सहित) पर , आर भाषा परिभाषा के this section देखें।

1

मैं सिर्फ एक ही मुद्दा का सामना करना पड़ा - आप किसी भी \ एक्स जहां x तो एक चरित्र है मुझे यकीन है कि कैसे, मैं मुझे पता था कि इच्छा है, लेकिन एक विशिष्ट एस्केप अनुक्रम के लिए इसे ठीक करने नहीं हूँ चाहते हैं ,. कहते हैं कि \ N तो आप मेरे मामले में

new = gsub("\n","",old,fixed=T) 

कर सकते हैं, मैं केवल था \ N

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