2011-10-02 7 views
7

का उपयोग कर स्ट्रिंग को कैसे बदलूं? मेरे पास एक कॉर्पस है: txt = "माइक्रोइलेक्ट्रॉनिक पैटर्न के भीतर एक पैटर्न वाली परत।" मैं शब्द "पैटर्न" वास्तव में "फार्म" से प्रतिस्थापित करना चाहते हैं, मैं एक कोड लिखने की कोशिश:मैं gsub()

txt_replaced = gsub("pattern","form",txt) 

हालांकि, में responsed कोष txt_replaced है: "एक शास्त्रीय रूप के भीतर एक का गठन परत। "

जैसा कि आप देख सकते हैं, "पैटर्न" शब्द गलत तरीके से "गठित" द्वारा प्रतिस्थापित किया गया है क्योंकि "पैटर्न" में विशेषताओं के कुछ हिस्सों "पैटर्न" से मेल खाते हैं।

मैं यह पूछना चाहता हूं कि अगर मैं gsub() का उपयोग कर स्ट्रिंग को प्रतिस्थापित कर सकता हूं? यही है, केवल सटीक मिलान वाला शब्द बदला जाना चाहिए।

मैं नीचे प्रतिक्रिया के लिए प्यास: "एक माइक्रोइलेक्ट्रॉनिक रूप में एक पैटर्न वाली परत।"

बहुत धन्यवाद!

+3

इस प्रश्न को ढूंढें: http://stackoverflow.com/questions/6528258/help-with-complete-word-matching-using-grepl-in-r – kohske

उत्तर

21

जैसा कि @ कोशके ने नोट किया, एक बहुत ही समान प्रश्न का उत्तर दिया गया है (मेरे द्वारा)। ... लेकिन उस grep था और इस gsub है, इसलिए मैं इसे फिर से जवाब देंगे:

"\ <" शब्द के प्रारंभ को पलायन अनुक्रम है, और ">" अंत है। आप \b बजाय \< और \> इस्तेमाल कर सकते हैं

txt <- "a patterned layer within a microelectronic pattern." 
txt_replaced <- gsub("\\<pattern\\>","form",txt) 
txt_replaced 
# [1] "a patterned layer within a microelectronic form." 

या,: आप आर तार के बैकस्लैश दोगुना करने के लिए इसलिए जरूरत है,। तो यह दोनों सिरों>

txt_replaced <- gsub("\\bpattern\\b","form",txt) 

भी ध्यान रखें कि यदि आप केवल एक घटना बदलना चाहते हैं, तो आप sub बजाय gsub का उपयोग करना चाहिए पर इस्तेमाल किया जा सकता \b एक शब्द सीमा से मेल खाता है।

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