कैसे ठीक करें: स्ट्रस्प्लिट (यूनिटस्पेक, "") में त्रुटि: चरित्र के बिना तर्क
R में आपके सामने एक त्रुटि आ सकती है:
Error in strsplit(df$my_column, split = "1"): non-character argument
यह त्रुटि आमतौर पर तब होती है जब आप स्ट्रिंग को विभाजित करने के लिए आर में स्ट्रस्प्लिट() फ़ंक्शन का उपयोग करने का प्रयास करते हैं, जब आप जिस ऑब्जेक्ट के साथ काम कर रहे हैं वह स्ट्रिंग नहीं है।
यह ट्यूटोरियल सटीक रूप से बताता है कि इस त्रुटि को कैसे ठीक किया जाए।
त्रुटि को पुन: उत्पन्न कैसे करें
मान लीजिए कि हमारे पास R में निम्नलिखित डेटा फ़्रेम है:
#create data frame df <- data. frame (team=c('A', 'B', 'C'), dots=c(91910, 14015, 120215)) #view data frame df team points 1 A 91910 2 B 14015 3 C 120215
अब मान लीजिए कि हम संख्या 1 दिखाई देने के आधार पर “अंक” कॉलम में मानों को विभाजित करने के लिए strsplit() फ़ंक्शन का उपयोग करने का प्रयास करते हैं:
#attempt to split values in points column
strsplit(df$points, split="1")
Error in strsplit(df$points, split = "1"): non-character argument
हमें एक त्रुटि प्राप्त होती है क्योंकि वेरिएबल “पॉइंट्स” कोई वर्ण नहीं है।
हम इस चर के वर्ग की जाँच करके इसकी पुष्टि कर सकते हैं:
#display class of "points" variable
class(df$points)
[1] "digital"
हम देख सकते हैं कि इस वेरिएबल में एक संख्यात्मक वर्ग है।
त्रुटि को कैसे ठीक करें
इस त्रुटि को ठीक करने का तरीका strsplit () फ़ंक्शन का उपयोग करने से पहले “पॉइंट्स” वेरिएबल को एक कैरेक्टर में बदलने के लिए as.character () का उपयोग करना है:
#split values in points column based on where 1 appears
strsplit(as. character (df$points), split="1")
[[1]]
[1990"
[[2]]
[1] "" "40" "5"
[[3]]
[1] "" "202" "5"
इस बार हमने प्रत्येक मान को “अंक” कॉलम में सफलतापूर्वक विभाजित कर दिया क्योंकि हमने “अंक” को एक वर्ण में बदलने के लिए पहली बार as.character() फ़ंक्शन का उपयोग किया था।
अतिरिक्त संसाधन
निम्नलिखित ट्यूटोरियल बताते हैं कि आर में अन्य सामान्य त्रुटियों को कैसे हल किया जाए:
आर में कैसे ठीक करें: नाम पिछले नामों से मेल नहीं खाते
आर में कैसे ठीक करें: कॉलम नामों की तुलना में अधिक कॉलम
आर में मरम्मत कैसे करें: प्रतिस्थापन में एक्स पंक्तियां हैं, डेटा में वाई है