कैसे ठीक करें: eval(predvars, data, env) में त्रुटि: ऑब्जेक्ट 'x' नहीं मिला
R में आपके सामने एक त्रुटि आ सकती है:
Error in eval(predvars, data, env): object 'x' not found
यह त्रुटि तब होती है जब आप नए डेटा फ्रेम के प्रतिक्रिया मूल्यों की भविष्यवाणी करने के लिए आर में एक प्रतिगमन मॉडल का उपयोग करने का प्रयास करते हैं, लेकिन नए डेटा फ्रेम में कॉलम नाम आपके द्वारा उपयोग किए जाने वाले डेटा फ्रेम में कॉलम नामों से मेल नहीं खाते हैं। मॉडल को फिट करें. .
यह ट्यूटोरियल सटीक रूप से बताता है कि इस त्रुटि को कैसे ठीक किया जाए।
त्रुटि को पुन: उत्पन्न कैसे करें
मान लीजिए कि हम R में एक सरल रैखिक प्रतिगमन मॉडल फिट करते हैं:
#create data frame
data <- data. frame (x=c(1, 2, 2, 3, 5, 6, 8, 9),
y=c(7, 8, 8, 6, 9, 8, 12, 14))
#fit linear regression model to data
model <- lm(y ~ x, data=data)
#view summary of model
summary(model)
Call:
lm(formula = y ~ x, data = data)
Residuals:
Min 1Q Median 3Q Max
-2.1613 -0.7500 0.5000 0.9355 1.5161
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 5.5161 0.9830 5.611 0.00137 **
x 0.7742 0.1858 4.167 0.00590 **
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 1.463 on 6 degrees of freedom
Multiple R-squared: 0.7432, Adjusted R-squared: 0.7004
F-statistic: 17.37 on 1 and 6 DF, p-value: 0.005896
अब मान लीजिए कि हम एक नए डेटा फ्रेम के लिए प्रतिक्रिया मूल्यों की भविष्यवाणी करने के लिए भविष्यवाणी () फ़ंक्शन का उपयोग करने का प्रयास कर रहे हैं:
#define new data frame
new_data <- data. frame (x1=c(4, 5, 7, 8, 9))
#attempt to predict y values for new data frame
predict(model, newdata=new_data)
Error in eval(predvars, data, env): object 'x' not found
हमें एक त्रुटि प्राप्त होती है क्योंकि मॉडल को फ़िट करते समय हमने जिस डेटा फ़्रेम का उपयोग किया था, उसमें x नामक एक भविष्यवक्ता चर था, लेकिन नए डेटा फ़्रेम में हमने भविष्यवक्ता चर को x1 नाम दिया था।
चूँकि ये नाम मेल नहीं खाते, इसलिए हमें एक त्रुटि प्राप्त होती है।
त्रुटि को कैसे ठीक करें
इस त्रुटि को ठीक करने का तरीका बस यह सुनिश्चित करना है कि नए डेटा फ्रेम में प्रेडिक्टर वेरिएबल का नाम समान हो।
इसलिए हम नए डेटा ब्लॉक में पूर्वानुमानित चर x का नाम देना सुनिश्चित करेंगे:
#define new data frame
new_data <- data. frame (x=c(4, 5, 7, 8, 9))
अब हम नए डेटा फ्रेम के लिए प्रतिक्रिया मूल्यों की भविष्यवाणी करने के लिए भविष्यवाणी () फ़ंक्शन का उपयोग कर सकते हैं:
#predict y values for new data frame
predict(model, newdata=new_data)
1 2 3 4 5
8.612903 9.387097 10.935484 11.709677 12.483871
कॉलम नाम मेल खाने के बाद से हम बिना किसी त्रुटि के नए डेटा फ्रेम के लिए y मानों का सफलतापूर्वक अनुमान लगाने में सक्षम हैं।
अतिरिक्त संसाधन
निम्नलिखित ट्यूटोरियल बताते हैं कि आर में अन्य सामान्य त्रुटियों को कैसे हल किया जाए:
आर में कैसे ठीक करें: नाम पिछले नामों से मेल नहीं खाते
आर में कैसे ठीक करें: लंबी वस्तु की लंबाई छोटी वस्तु की लंबाई का गुणज नहीं है
आर में कैसे ठीक करें: कंट्रास्ट केवल 2 या अधिक स्तरों वाले कारकों पर लागू किया जा सकता है