gsub

2012-08-02 8 views
17

के साथ स्ट्रिंग से पैटर्न निकालें मैं अपनी स्ट्रिंग में अंडरस्कोर से पहले सबस्ट्रिंग को हटाने के लिए संघर्ष कर रहा हूं। मैं भिन्न हो सकते हैं अंडरस्कोर से पहले थोड़ा के रूप में * (वाइल्डकार्ड) का उपयोग करना चाहते:gsub

a <- c("foo_5", "bar_7") 

a <- gsub("*_", "", a, perl = TRUE) 

परिणाम तरह दिखना चाहिए:

> a 
[1] 5 7 

मैं भी तरह "^ * " या सामान की कोशिश की " "लेकिन वास्तव में काम नहीं किया।

उत्तर

34

निम्नलिखित कोड अपने उदाहरण पर काम करता है:

gsub(".*_", "", a) 
+0

बहुत धन्यवाद। इससे क्या होता है '।' के लिए खड़ा है? स्टार "*" (वाइल्डकार्ड) अपने आप क्यों काम नहीं करता है? मुझे समझ में नहीं आता? – user969113

+4

'।' किसी भी चरित्र के लिए खड़ा है, ताकि "। *" किसी भी चरित्र के किसी भी संख्या के लिए खड़ा है। आप 'regex' टाइप करके अधिक स्पष्टीकरण पा सकते हैं। – Pop

+1

आह मैं देखता हूँ! मैंने सोचा * इसमें '।' का अर्थ शामिल है। पहले से! खैर, अब मैं बेहतर जानता हूँ। एक बार फिर धन्यवाद! – user969113

4

वैकल्पिक रूप से, आप भी कोशिश कर सकते हैं:

gsub("\\S+_", "", a) 
-4
as.numeric(gsub(pattern=".*_", replacement = '', a) 
[1] 5 7 
+2

बेहतर समझने के लिए कोड के अलावा हमेशा अपने उत्तर में स्पष्टीकरण जोड़ें – bigbounty

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