2011-06-17 15 views
5

में मैं पैटर्न "|" पर चरित्र की एक स्ट्रिंग को विभाजित करना चाहता हूंचरित्र "|" आर

लेकिन

unlist(strsplit("I am | very smart", " | ")) 

[1] "I"  "am" "|"  "very" "smart" 

या

gsub(pattern="|", replacement="*", x="I am | very smart")  

[1] "*I* *a*m* *|* *v*e*r*y* *s*m*a*r*t*" 
+1

सबसे खराब प्रारूप मैंने कभी देखा है ... –

+0

@ BeingSimpler :) मैंने प्रारूप नहीं चुना है। मैं वास्तव में एक विकी टेबल पार्स कर रहा हूँ। ऐसा करने के लिए निश्चित रूप से अन्य तरीके हैं। लेकिन मुझे इसे आर में करना है और इसे स्वयं करने से ऐसा करने का कोई और तरीका नहीं मिला। – RockScience

उत्तर

15

उपयोग fixed तर्क:

unlist(strsplit("I am | very smart", " | ", fixed=TRUE)) 
# [1] "I am"  "very smart" 

साइड प्रभाव तेजी से गणना है।

stringr विकल्प:

unlist(stringr::str_split("I am | very smart", fixed(" | "))) 
13

| एक metacharacter है। आपको इससे बचने की जरूरत है (इससे पहले \\ का उपयोग करें)।

> unlist(strsplit("I am | very smart", " \\| ")) 
[1] "I am"  "very smart" 
> sub(pattern="\\|", replacement="*", x="I am | very smart") 
[1] "I am * very smart" 

संपादित करें: कारण आप दो बैकस्लैश की जरूरत है कि एक बैकस्लैश उपसर्ग ऐसे \n (newline) और \t (टैब) के रूप में विशेष प्रतीकों के लिए आरक्षित किया गया है। अधिक जानकारी के लिए सहायता पृष्ठ ?regex देखें। अन्य मेटाएक्टेक्टर . \ | () [ {^$ * + ?

+0

धन्यवाद !!! लेकिन आप कैसे जानते थे कि हमें वहां 2 बैकस्लाश की आवश्यकता है ?? मैंने केवल एक के साथ कोशिश की। – RockScience

+4

@ रॉकसाइंस आपको दो कारणों की आवश्यकता है \ मेटाएक्टर भी है। – Marek

0

पाइप '|' एक मेटाएक्टेक्टर है, जिसे नियमित अभिव्यक्ति में 'OR' ऑपरेटर के रूप में उपयोग किया जाता है।

कोशिश unlist(strsplit("I am | very smart", "\s+\|\s+"))

+0

दोबारा, मुझे इसे काम करने के लिए 2 बैकस्लैश डालना होगा: अनलिस्ट (स्ट्रस्प्लिट ("मैं हूं | बहुत स्मार्ट", "\\ s + \\ | \\ s +")) – RockScience

4

आप read.table बुला एक बेहतर विकल्प हो सकता है की तुलना में एक तालिका को पार्स रहे हैं। टिनी उदाहरण:

> txt <- textConnection("I am | very smart") 
> read.table(txt, sep='|') 
    V1   V2 
1 I am very smart 

तो मैं Rcurl साथ विकि पृष्ठ लाने में सुझाव है, XML साथ पेज के दिलचस्प हिस्सा हड़पने (जो है एक बहुत neat function भी HTML तालिकाओं पार्स करने के लिए) और यदि HTML स्वरूप उपलब्ध नहीं है निर्दिष्ट निर्दिष्ट read.table पर कॉल करें। सौभाग्य!

+0

आपकी सलाह के लिए धन्यवाद ... readHTMLTable वास्तव में है वास्तव में शांत मैंने आर में अपनी टेबल प्राप्त करने में कामयाब रहा है, धन्यवाद – RockScience

+0

वास्तव में, यह बहुत अच्छी चाल है .... – ramesh

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