क्यों strsplit ("ए, बी। सी।", सी (",", "।")) नहीं हटा "। ”?
मैं स्पष्ट रूप से प्रलेखन को गलत समझ रहा हूं, इसलिए मैं इसे जल्दी बनाऊंगा। यह मेरी समझ है कि strsplit("A, B . C",c(", ",". "))"ए, बी। सी।" की सभी घटनाओं के लिए "ए, बी" की खोज करनी चाहिए और इसे स्टॉपप्लिट करना चाहिए जैसे कि मैं भाग गया था strsplit("A, B . C",", ")और फिर इसे उसी रूप में आउटपुट लेना चाहिए, फिर भी एक स्ट्रिंग रूप में, और स्टैस्प्लिट करें मैं भागा था strsplit([tidied output],". ")। दूसरे शब्दों में, मेरा अपेक्षित आउटपुट होगा list(c("A","B ","C"))।
जब मैं वास्तव में इस कोड को चलाता हूं, तो मुझे निम्नलिखित परिणाम मिलते हैं, जिसमें दिखाया गया है कि "" को हटाया नहीं गया है। क्या गलत हो गया है?
> strsplit("A, B . C",c(", ",". "))
[[1]]
[1] "A" "B . C"
यह एक रेगेक्स मुद्दा नहीं प्रतीत होता है। उदाहरण के लिए, सेटिंग fixed=TRUEको रेगेक्स मिलान को अक्षम करना है, लेकिन यह मेरा आउटपुट नहीं बदलता है:
> strsplit("A, B . C",c(", ",". "),fixed = TRUE)
[[1]]
[1] "A" "B . C"
जवाब
जब एक वेक्टर दिया जाता splitहै तो वह बहुत काम नहीं करता है, f.ex देखें
strsplit(c("A, B . C", "A, B . C"), c(", ", ". "), fixed=TRUE )
# [[1]]
# [1] "A" "B . C"
# [[2]]
# [1] "A, B " "C"
यह साथ साइकिल है x। यदि xलंबाई एक है, तो केवल पहले का splitउपयोग किया जाएगा।
और अधिक तर्कों को जोड़ने का सबसे आसान तरीका splitहै, मैंने पाया है कि इसे नियमित रेगेक्स के रूप में माना जाता है, जैसे
strsplit("A, B . C", "[.,] " )
# [[1]]
# [1] "A" "B " "C"