कैसे ठीक करें: colmeans(x, na.rm = true) में त्रुटि: 'x' संख्यात्मक होना चाहिए


R का उपयोग करते समय आपके सामने एक त्रुटि संदेश आ सकता है:

 Error in colMeans(x, na.rm = TRUE): 'x' must be numeric

यह त्रुटि आम तौर पर तब होती है जब आप R में प्रमुख घटक विश्लेषण करने के लिए prcomp() फ़ंक्शन का उपयोग करने का प्रयास करते हैं, जब आपके द्वारा उपयोग किए जा रहे डेटा फ़्रेम में एक या अधिक कॉलम संख्यात्मक नहीं होते हैं।

इस त्रुटि से निपटने के दो तरीके हैं:

विधि 1: गैर-संख्यात्मक स्तंभों को संख्यात्मक स्तंभों में बदलें

विधि 2: डेटा फ़्रेम से गैर-संख्यात्मक कॉलम हटाएँ

निम्नलिखित उदाहरण दिखाते हैं कि व्यवहार में प्रत्येक विधि का उपयोग कैसे करें।

त्रुटि को पुन: उत्पन्न कैसे करें

मान लीजिए कि हम निम्नलिखित डेटा फ़्रेम पर प्रमुख घटक विश्लेषण करने का प्रयास कर रहे हैं जिसमें वर्णों का एक कॉलम है:

 #create data frame
df <- data. frame (team=c('A', 'A', 'C', 'B', 'C', 'B', 'B', 'C', 'A'),
                 points=c(12, 8, 26, 25, 38, 30, 24, 24, 15),
                 rebounds=c(10, 4, 5, 5, 4, 3, 8, 18, 22))

#view data frame
df

  team points rebounds
1 to 12 10
2 to 8 4
3 C 26 5
4 B 25 5
5 C 38 4
6 B 30 3
7 B 24 8
8 C 24 18
9 to 15 22

#attempt to calculate principal components
prcomp(df)

Error in colMeans(x, na.rm = TRUE): 'x' must be numeric

टीम कॉलम एक कैरेक्टर कॉलम है, जो prcomp() फ़ंक्शन का उपयोग करने का प्रयास करते समय त्रुटि उत्पन्न करता है।

विधि 1: गैर-संख्यात्मक स्तंभों को संख्यात्मक स्तंभों में बदलें

इस त्रुटि से बचने का एक तरीका prcomp() फ़ंक्शन का उपयोग करने से पहले टीम कॉलम को संख्यात्मक कॉलम में परिवर्तित करना है:

 #convert character column to numeric
df$team <- as. numeric (as. factor (df$team))

#view updated data frame
df

  team points rebounds
1 1 12 10
2 1 8 4
3 3 26 5
4 2 25 5
5 3 38 4
6 2 30 3
7 2 24 8
8 3 24 18
9 1 15 22

#calculate main components
prcomp(df)

Standard deviations (1, .., p=3):
[1] 9.8252704 6.0990235 0.4880538

Rotation (nxk) = (3 x 3):
                 PC1 PC2 PC3
team -0.06810285 0.04199272 0.99679417
points -0.91850806 0.38741460 -0.07907512
rebounds 0.38949319 0.92094872 -0.01218661

इस बार हमें कोई त्रुटि नहीं मिली क्योंकि डेटा फ़्रेम में प्रत्येक कॉलम संख्यात्मक है।

विधि 2: डेटा फ़्रेम से गैर-संख्यात्मक कॉलम हटाएँ

त्रुटि से बचने का दूसरा तरीका यह है कि prcomp() फ़ंक्शन का उपयोग करने से पहले डेटा फ़्रेम से सभी गैर-संख्यात्मक कॉलम हटा दें :

 #remove non-numeric columns from data frame
df_new <- df[ , unlist(lapply(df, is. numeric ))]

#view new data frame
df_new

  rebound points
1 12 10
2 8 4
3 26 5
4 25 5
5 38 4
6 30 3
7 24 8
8 24 18
9 15 22

#calculate main components
prcomp(df_new)

Standard deviations (1, .., p=2):
[1] 9.802541 6.093638

Rotation (nxk) = (2 x 2):
                PC1 PC2
points 0.9199431 0.3920519
rebounds -0.3920519 0.9199431

फिर, हमें कोई त्रुटि नहीं मिलती क्योंकि डेटा फ़्रेम में प्रत्येक कॉलम संख्यात्मक है।

ध्यान दें : ज्यादातर मामलों में, पहली विधि पसंदीदा समाधान है क्योंकि यह कुछ कॉलमों को हटाने के बजाय सभी डेटा का उपयोग करती है।

अतिरिक्त संसाधन

निम्नलिखित ट्यूटोरियल बताते हैं कि आर में अन्य सामान्य त्रुटियों को कैसे ठीक किया जाए:

आर में कैसे ठीक करें: तर्कों में अलग-अलग संख्या में लाइनें शामिल होती हैं
आर में कैसे ठीक करें: अप्रयुक्त तर्कों को चुनने में त्रुटि
आर में मरम्मत कैसे करें: प्रतिस्थापन की लंबाई शून्य है

एक टिप्पणी जोड़ने

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *