strsplit
का उपयोग करने वाले फ़ंक्शंस बनाते समय, वेक्टर इनपुट वांछित व्यवहार नहीं करते हैं, और sapply
का उपयोग करने की आवश्यकता है। यह सूची आउटपुट के कारण है कि strsplit
उत्पादन करता है। क्या प्रक्रिया को सदिश बनाने का कोई तरीका है - यानी, फ़ंक्शन इनपुट के प्रत्येक तत्व के लिए सूची में सही तत्व उत्पन्न करता है?आर strsplit vectorize कैसे?
उदाहरण के लिए, एक चरित्र वेक्टर में शब्द की लंबाई गिनती करने के लिए:
words <- c("a","quick","brown","fox")
> length(strsplit(words,""))
[1] 4 # The number of words (length of the list)
> length(strsplit(words,"")[[1]])
[1] 1 # The length of the first word only
> sapply(words,function (x) length(strsplit(x,"")[[1]]))
a quick brown fox
1 5 5 3
# Success, but potentially very slow
आदर्श रूप में, length(strsplit(words,"")[[.]])
की तरह कुछ जहां .
इनपुट वेक्टर के प्रासंगिक हिस्सा होने के रूप में व्याख्या की है।
धन्यवाद शेन, लेकिन मुझे वही परिणाम नहीं मिल रहा है जो मैं कर रहा हूं। यह Verhoeff चेक अंक योजना का कार्यान्वयन है। मैंने उपरोक्त कार्यान्वयन के साथ संगत होने के लिए अपने कार्य को संशोधित किया है, लेकिन 100,000 लंबे वेक्टर के इनपुट के साथ, मुझे पहले से 8 तत्वों की सूची मिल रही है और दूसरे से 8 तत्वों का वेक्टर (8 सबसे अधिक है वेक्टर तत्वों की संभावना लंबाई)। – James
@ जेम्स: फिर मैं कल्पना करता हूं कि आपके फ़ंक्शन के साथ कुछ और होना चाहिए। जैसा कि आप ऊपर देख सकते हैं, मैंने अभी 270k से अधिक रिकॉर्ड वाले वेक्टर पर इसका परीक्षण किया और प्रत्येक से एक ही परिणाम प्राप्त किए। आप अपना अधिक कोड प्रदान करने का प्रयास कर सकते हैं या फिर अपना कुछ डेटा प्रदान कर सकते हैं। – Shane
संयोग से, मैंने अभी 2.1 2.1.1 में प्लीयर संस्करण 0.1.9 स्थापित किया है और उपरोक्त में समान समय था। – Shane