मैं एक एकल में एक वेक्टर के तत्वों के भीतर सभी एकाधिक (2 या अधिक) खाली स्थान के पात्रों को संक्षिप्त करने के कोशिश कर रहा था युक्त वैक्टर, के साथ मुद्दों, gsub()
का उपयोग कर उदाहरण के लिए:आर regex: चरित्र NAS
x1 <- c(" abc", "a b c ", "a b c")
gsub("\\s{2,}", " ", x1)
[1] " abc" "a b c " "a b c"
लेकिन जैसे जल्द ही के रूप वेक्टर NA
शामिल प्रतिस्थापन विफल रहता है:
x2 <- c(NA, " abc", "a b c ", "a b c")
gsub("\\s{2,}", " ", x2)
[1] NA " " " " " "
हालांकि, यह ठीक काम करता है अगर एक Perl- जैसे नियमित अभिव्यक्ति का उपयोग करता है:
gsub("\\s{2,}", " ", x2, perl = TRUE)
[1] NA " abc" "a b c " "a b c"
क्या किसी के पास सुझाव है कि क्यों आर के नियमित नियमित अभिव्यक्ति इस तरह व्यवहार करते हैं? मैं लिनक्स x86-64 पर आर 3.1.1 का उपयोग कर रहा हूं अगर यह मदद करता है।
आप अधिक बैक स्लैश जोड़ने की जाँच की थी? आर में यह काफी मुश्किल है। आपको आमतौर पर इस तरह के अभिव्यक्तियों को पहचानने के लिए तीन की आवश्यकता होती है – Llopis
@Llopis यह गलत है। रेगेक्स वास्तव में '\ s' है, जिसके लिए हम '\\ s' पर पहुंचने के लिए एक बैकस्लैश तैयार करते हैं। – jbaums
ओएस एक्स पर भी पुष्टि की गई। '' S' और '[[: space:]] 'व्यवहार को प्रदर्शित करते हैं, जबकि एक शाब्दिक अंतरिक्ष वर्ण (या स्थान/टैब वर्ण वर्ग) ठीक काम करता है। मैं आर –