2012-07-04 17 views
6

मैं यह पता लगाने की कोशिश कर रहा हूं कि आर lm() फ़ंक्शन में subset तर्क कैसे कार्य करता है। विशेष रूप से follwoing कोड मेरे लिए संदिग्ध लगता है:सबसेट तर्क lm() फ़ंक्शन में कैसे काम करता है?

data(mtcars) 
summary(lm(mpg ~ wt, data=mtcars)) 
summary(lm(mpg ~ wt, cyl, data=mtcars)) 

हर मामले प्रतिगमन 32 टिप्पणियों

dim(lm(mpg ~ wt, cyl ,data=mtcars)$model) 
    [1] 32 2 
    dim(lm(mpg ~ wt ,data=mtcars)$model) 
    [1] 32 2 

अभी तक गुणांकों को बदलने (R² के साथ) है में।

सबसेट एक वैकल्पिक वेक्टर टिप्पणियों के एक सबसेट को निर्दिष्ट फिटिंग प्रक्रिया

+0

यदि आप गैर-न्यूमेरिक सबसेट के साथ काम कर रहे हैं, तो उद्धरणों का उपयोग करना न भूलें। – user3598724

उत्तर

12

में प्रयोग की जाने वाली एक सामान्य सिद्धांत के रूप में, वैक्टर subsetting में इस्तेमाल किया: मदद इस मामले पर बहुत अधिक जानकारी प्रदान नहीं करता है या तो तार्किक (उदाहरण के लिए प्रत्येक तत्व के लिए एक वास्तविक या गलत) या संख्यात्मक (उदाहरण के लिए एक संख्या) कर सकते हैं। नमूनाकरण में मदद करने के लिए एक सुविधा के रूप में, यदि यह संख्यात्मक आर है तो यह एक ही तत्व को कई बार शामिल करेगा यदि यह सबसेटिंग संख्यात्मक वेक्टर में दिखाई देता है।

के cyl पर एक नज़र डालें:

> mtcars$cyl 
[1] 6 6 4 6 8 6 8 4 4 6 6 8 8 8 8 8 8 4 4 4 4 8 8 8 8 4 4 4 8 6 8 4 

तो आप एक ही लंबाई के एक data.frame हो रही है, लेकिन यह पंक्ति 6, पंक्ति 6, पंक्ति 4, पंक्ति 6, आदि के शामिल है

आप यह देख सकते हैं यदि आप subsetting खुद कर:

> head(mtcars[mtcars$cyl,]) 
       mpg cyl disp hp drat wt qsec vs am gear carb 
Valiant  18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1 
Valiant.1  18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1 
Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1 
Valiant.2  18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1 
Merc 240D  24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2 
Valiant.3  18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1 

आप इस तरह कुछ करने के लिए मतलब है?

summary(lm(mpg ~ wt, cyl==6, data=mtcars)) 
+0

आपके लिए त्वरित प्रतिक्रिया के लिए धन्यवाद! मैं अनुमान लगा रहा था कि यह इस तरह काम करता है लेकिन मेरे वास्तविक कोड में मैं सबसेट ने पंक्ति-सूचकांक का उपयोग किया जो डेटा में नहीं थे (इन्हें 'एलएम()' फ़ंक्शन द्वारा गिरा दिया गया था) जो मुझे और भी भ्रमित कर देता था;)। मैं वास्तव में इस पर ठोकर खाई क्योंकि मैंने गलती से एक अल्पविराम जोड़ा :) टैंक फिर से! – Seb

संबंधित मुद्दे