R Language
प्रतिस्थापन द्वारा तारों को संशोधित करना
खोज…
परिचय
sub
और gsub
पैटर्न का उपयोग करके तार को संपादित करने के लिए उपयोग किया जाता है। पैटर्न बनाने के लिए संबंधित कार्यों और नियमित अभिव्यक्तियों पर अधिक के लिए पैटर्न मिलान और प्रतिस्थापन देखें।
कैप्चर समूहों का उपयोग करके वर्ण स्ट्रिंग को पुनर्व्यवस्थित करें
यदि आप एक चरित्र तार के क्रम को बदलना चाहते हैं, तो आप pattern
में कोष्ठक का उपयोग स्ट्रिंग के समूह भागों में एक साथ कर सकते हैं। replacement
समूह में ये समूह लगातार संख्याओं का उपयोग करके जोड़ सकते हैं।
निम्नलिखित उदाहरण से पता चलता है कि आप "उपनाम, उपनाम" के वेक्टर में "सरनेम, फोरनेम" के नामों के वेक्टर को कैसे पुन: व्यवस्थित कर सकते हैं।
library(randomNames)
set.seed(1)
strings <- randomNames(5)
strings
# [1] "Sigg, Zachary" "Holt, Jake" "Ortega, Sandra" "De La Torre, Nichole"
# [5] "Perkins, Donovon"
sub("^(.+),\\s(.+)$", "\\2 \\1", strings)
# [1] "Zachary Sigg" "Jake Holt" "Sandra Ortega" "Nichole De La Torre"
# [5] "Donovon Perkins"
यदि आपको केवल उपनाम की आवश्यकता है तो आप केवल पहले जोड़े को संबोधित कर सकते हैं।
sub("^(.+),\\s(.+)", "\\1", strings)
# [1] "Sigg" "Holt" "Ortega" "De La Torre" "Perkins"
हटाए गए लगातार तत्वों को हटा दें
मान लें कि हम एक स्ट्रिंग से डुप्लिकेट किए गए पार्श्व तत्व को खत्म करना चाहते हैं (यह एक से अधिक हो सकता है)। उदाहरण के लिए:
2,14,14,14,19
और इसे इसमें रूपांतरित करें:
2,14,19
gsub
का उपयोग gsub
, हम इसे प्राप्त कर सकते हैं:
gsub("(\\d+)(,\\1)+","\\1", "2,14,14,14,19")
[1] "2,14,19"
यह एक से अधिक विभिन्न पुनरावृत्ति के लिए भी काम करता है, उदाहरण के लिए:
> gsub("(\\d+)(,\\1)+", "\\1", "2,14,14,14,19,19,20,21")
[1] "2,14,19,20,21"
आइए बताते हैं नियमित अभिव्यक्ति:
-
(\\d+)
: एक समूह 1 द्वारा सीमांकित () और कोई भी अंक (कम से कम एक) पाता है। याद रखें कि हमें यहां डबल बैकस्लैश (\\
) का उपयोग करने की आवश्यकता है क्योंकि एक वर्ण चर के लिए एक बैकस्लैश शाब्दिक स्ट्रिंग सीमांकक (\"
या\'
) के लिए विशेष एस्केप वर्ण का प्रतिनिधित्व करता है।\d\
[0-9]
:[0-9]
बराबर है। -
,
: एक विराम चिह्न संकेत:,
(हम रिक्त स्थान या किसी अन्य सीमांकक शामिल कर सकते हैं) -
\\1
: समूह 1 के लिए एक समान स्ट्रिंग, यानी: दोहराया संख्या। यदि ऐसा नहीं होता है, तो पैटर्न मेल नहीं खाता है।
आइए एक समान स्थिति का प्रयास करें: लगातार दोहराए गए शब्दों को समाप्त करें:
one,two,two,three,four,four,five,six
फिर, बस \d
को \w
बदलें, जहां \w
किसी भी शब्द वर्ण से मेल खाता है, जिसमें: कोई अक्षर, अंक या अंडरस्कोर। यह [a-zA-Z0-9_]
बराबर है:
> gsub("(\\w+)(,\\1)+", "\\1", "one,two,two,three,four,four,five,six")
[1] "one,two,three,four,five,six"
>
फिर, ऊपर दिए गए पैटर्न में एक विशेष केस डुप्लिकेट अंकों के मामले के रूप में शामिल है।