आर

2012-05-08 5 views
8

में gsub के साथ पिछली जगहों को हटा रहा है क्या किसी के पास gsub के साथ चर पर पिछली जगहों को हटाने की चाल है?आर

नीचे मेरे डेटा का एक नमूना है। जैसा कि आप देख सकते हैं, मेरे पास चर में रिक्त स्थान और रिक्त स्थान दोनों हैं।

county <- c("mississippi ","mississippi canyon","missoula ", 
      "mitchell ","mobile ", "mobile bay") 

मैं सभी रिक्त स्थान को हटाने के लिए निम्न तर्क का उपयोग कर सकता हूं, लेकिन जो मैं वास्तव में चाहता हूं वह केवल अंत में रिक्त स्थान को स्थानांतरित करना है।

county2 <- gsub(" ","",county) 

किसी भी सहायता की सराहना की जाएगी। अपने पाठ अनुक्रम के अंत के लिए

county <- c("mississippi ","mississippi canyon","missoula ", 
     "mitchell ","mobile ", "mobile bay") 
county2 <- gsub(" $","", county, perl=T) 

$ स्टैंड, इसलिए केवल अवांछित स्पेस मिलान किया जाता है:

+0

इसके अलावा यहां उत्तर: http://stackoverflow.com/a/2261149/1172302 –

उत्तर

10

तुम एक नियमित अभिव्यक्ति इस्तेमाल कर सकते हैं। perl=T मिलान पैटर्न के लिए नियमित अभिव्यक्तियों को सक्षम बनाता है। नियमित अभिव्यक्ति पर अधिक के लिए ?regex देखें।

+0

धन्यवाद बहुत बहुत – MikeTP

+4

@MikeTP: ध्यान दें कि यह केवल है अगर वहाँ केवल एक ही अनुगामी अंतरिक्ष काम करेंगे। यदि आपके 'काउंटी' वेक्टर में कई पिछली जगहों वाला तत्व है, तो केवल अंतिम हटा दिया जाएगा। –

30

?regex पढ़ें यह जानने के लिए कि नियमित अभिव्यक्ति कैसे काम करती है।

gsub("[[:space:]]*$","",county) 

[:space:] एक पूर्व निर्धारित चरित्र वर्ग आपके क्षेत्र में अंतरिक्ष से मेल खाता है है। * मैच शून्य या अधिक बार दोहराने के लिए कहता है और $ स्ट्रिंग के अंत से मेल खाता है।

+0

आपको बहुत धन्यवाद – MikeTP

+2

@ माइकTP ने अपने पैकेज 'स्ट्रिंगर' में सामान्य स्ट्रिंग फ़ंक्शंस का एक समूह संक्षेप में संक्षेप में सारांशित किया। वह जो करता है वह 'str_trim() 'है। – Justin

8

यदि आपको gsub कमांड का उपयोग करने की आवश्यकता नहीं है - तो str_trim फ़ंक्शन इसके लिए उपयोगी है।

library(stringr) 
    county <- c("mississippi ","mississippi canyon","missoula ", 
     "mitchell ","mobile ", "mobile bay") 
    str_trim(county) 
+1

ध्यान दें कि 'str_trim' gsub के लिए एक अच्छा रैपर है। मैं आपको "जीएसयूबी का उपयोग करने की आवश्यकता नहीं है" के बारे में स्पष्ट नहीं हूं। – Dason

+0

यह स्ट्रिंग के अंत में किसी भी रिक्त स्थान को हटा देगा, केवल एक ही नहीं। –

0
Above solution can not be generalized. Here is an example: 


    a<-" keep business moving" 
    str_trim(a) #Does remove trailing space in a single line string 

However str_trim() from 'stringr' package works only for a vector of words and a single line but does not work for multiple lines based on my testing as consistent with source code reference. 

    gsub("[[:space:]]*$","",a) #Does not remove trailing space in my example 
    gsub(" $","", a, perl=T) #Does not remove trailing space in my example 

Below code works for both term vectors and or multi-line character vectors which was provided by the reference[1] below. 

    gsub("^ *|(?<=) | *$", "", a, perl=T) 


#Reference:: 
+0

मैं इसे समझने की कोशिश कर रहा हूं, लेकिन मेरे लिए केवल एक प्रमुख स्थान है, पीछे की जगह नहीं? – TobiO