आर में कैसे ठीक करें: सबस्क्रिप्टेड असाइनमेंट में गुम मानों की अनुमति नहीं है


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

 Error in `[<-.data.frame`(`*tmp*`, df$A == 5, , value = list(A = c(NA, : 
  missing values are not allowed in subscripted assignments of data frames

यह त्रुटि आम तौर पर तब होती है जब आप किसी अन्य कॉलम के मानों का उपयोग करके एक कॉलम में मान निर्दिष्ट करने का प्रयास करते हैं, लेकिन NA मान मौजूद होते हैं।

निम्नलिखित उदाहरण दिखाता है कि व्यवहार में इस त्रुटि को कैसे हल किया जाए।

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

मान लीजिए कि हम R में निम्नलिखित डेटा फ़्रेम बनाते हैं:

 #create data frame
df <- data. frame (A=c(3, 4, 4, NA, 5, 8, 5, 9),
                 B=c(12, 13, 7, 7, 12, 11, 15, 7))

#view data frame
df

   AB
1 3 12
2 4 13
3 4 7
4 NA 7
5 5 12
6 8 11
7 5 15
8 9 7

अब मान लीजिए कि हम कॉलम बी में प्रत्येक पंक्ति को 10 का मान निर्दिष्ट करने का प्रयास करते हैं जहां कॉलम ए में संबंधित मान 5 है:

 #attempt to assign column B a value of 10 where A is equal to 5
df[df$A == 5, ]$B <- 10

Error in `[<-.data.frame`(`*tmp*`, df$A == 5, , value = list(A = c(NA, : 
  missing values are not allowed in subscripted assignments of data frames

हमें एक त्रुटि प्राप्त होती है क्योंकि कॉलम ए में एनए मान हैं और त्रुटि संदेश स्पष्ट रूप से हमें बताता है कि डेटा फ्रेम के सबस्क्रिप्ट असाइनमेंट में लापता मानों की अनुमति नहीं है।

त्रुटि से कैसे बचें

इस त्रुटि से बचने के दो तरीके हैं।

1. %in% ऑपरेटर का उपयोग करें

इस त्रुटि से बचने का एक तरीका असाइनमेंट करते समय %in% ऑपरेटर का उपयोग करना है:

 #assign column B a value of 10 where A is equal to 5
df[df$A %in% 5,]$B <- 10

#view updated data frame
df

   AB
1 3 12
2 4 13
3 4 7
4 NA 7
5 5 10
6 8 11
7 5 10
8 9 7

ध्यान दें कि कॉलम बी में प्रत्येक पंक्ति के लिए 10 का मान निर्दिष्ट किया गया है, जहां कॉलम ए में संबंधित मान 5 है और हमें कोई त्रुटि नहीं मिली है।

2. is.na() का उपयोग करें

इस त्रुटि से बचने का दूसरा तरीका असाइनमेंट निष्पादित करते समय is.na() फ़ंक्शन का उपयोग करना है:

 #assign column B a value of 10 where A is equal to 5
df[!is. na (df$A) & df$A == 5, ]$B <- 10

#view updated data frame
df

   AB
1 3 12
2 4 13
3 4 7
4 NA 7
5 5 10
6 8 11
7 5 10
8 9 7

फिर से, हम कॉलम बी में प्रत्येक पंक्ति को 10 का मान निर्दिष्ट कर सकते हैं जहां कॉलम ए में संबंधित मान 5 है और हमें कोई त्रुटि नहीं मिलती है।

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

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

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

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

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