2012-08-07 7 views
6

मैं एक नंबर (लंबाई में एक या दो अंक) और बिंदु को कैसे नष्ट कर इसे सीधे जो हर बार किसी विशिष्ट चर के भीतर एक स्ट्रिंग के अंत में होता है पूर्ववर्ती R में? उदाहरण:एक बिंदु और एक चरित्र स्ट्रिंग के अंत में एक नंबर हटाएं

z<-c("awe", "p.56.red.45", "ted.5", "you.88.tom") 

मैं केवल .45 और .5 निकालना चाहते हैं।

उत्तर

16

आप सिर्फ एक सरल नियमित अभिव्यक्ति की जरूरत है:

z_new = gsub("\\.[0-9]*$", "", z) 

कुछ टिप्पणियाँ:

  1. gsub में पहला तर्क पैटर्न हम देख रहे है। दूसरा तर्क यह है कि इसे किस जगह से बदला जाए (इस मामले में, कुछ भी नहीं)।
  2. $ चरित्र स्ट्रिंग
  3. [0-9]* के अंत में पैटर्न को दिखता है 1 या अधिक अंक दिखता है। वैकल्पिक रूप से, आप \\d* या [[:digit:]]* इस्तेमाल कर सकते हैं।
  4. \\. पूर्ण विराम मेल खाता है। हमें दो स्लेश के साथ पूर्ण स्टॉप से ​​बचने की जरूरत है।
-1

सबसे अच्छा तरीका यह करने के लिए प्रयास करें एक रेगुलर एक्सप्रेशन प्रतिस्थापन बयान के साथ है। आप यह कैसे करते हैं उस भाषा पर निर्भर करता है जिसका आप उपयोग कर रहे हैं।

यहाँ regex पैटर्न आप अनुगामी संख्या

की पहचान करने की जरूरत है (। \ घ {1,2})^

है और आप बस ""

के साथ मैच को प्रतिस्थापित करना चाहिए
संबंधित मुद्दे