/ / स्ट्रिंग एडिटिंग इन आर - टेकिंग आउट रिपीटिशन - स्ट्रिंग, आर, रिपीटिशन

आर में स्ट्रिंग संपादन - पुनरावृत्ति बाहर लेना - स्ट्रिंग, आर, पुनरावृत्ति

मैं आर में कुछ चरित्र डेटा के साथ काम कर रहा हूं, और मैंकुछ भाग हैं जो (foo) (foo) स्ट्रिंग के बीच में हैं। क्या उन पुनरावृत्तियों को स्वचालित रूप से खोजने के लिए, और उन्हें हटाने (उन्हें (उसी स्थिति में फू) के रूप में प्रतिनिधित्व करना)) है?

मैं सोच रहा था कि क्या एक संभावित समाधान स्ट्रैसप्लिट का उपयोग करना है), और जाँच करें कि क्या कोई समतुल्यता है, और फिर वापस) वापस लागू करें। क्या यह काम करेगा?

पूर्व। स्ट्रिंग: "एबीसी डीईसी (फू) (फू) एबीसी डीई"

उत्तर:

जवाब के लिए 3 № 1

आप निम्नलिखित उदाहरण के रूप में आर के भीतर एक नियमित नियमित अभिव्यक्ति प्रतिस्थापन का उपयोग कर सकते हैं:

test <- "abc def (foo)(foo) abc def"
gsub("(\(\w+\))\1","\1",test,perl=TRUE)

वैकल्पिक रूप से, आप पहले से डेटा साफ़ करने के लिए एक पर्ल-लाइनर चला सकते हैं:

echo "abc def (foo)(foo) abc defn" | perl -ne "s/((w+))1/$1/gi;print"

जवाब के लिए 2 № 2

यहाँ एक अनुक्रम में केवल 1 दोहराया तत्व रखने की संभावना है:

gsub("(.+)\1+","\1", x, perl=T)

HTH