2012-06-13 15 views
10

के लिए सटीक प्रतीत नहीं होते हैं यह मुझे परेशान कर रहा है। जब आप पूर्णांक के वेक्टर पर सारांश() चलाते हैं तो आपको सटीक परिणाम नहीं मिलते हैं। संख्याओं को गोलाकार लग रहा है। मैंने इसे विभिन्न ओएस के साथ तीन अलग-अलग मशीनों पर करने की कोशिश की और परिणाम समान हैं।सारांश विधि परिणाम वेक्टर

एक वेक्टर के लिए:

>a <- 0:628846 
>str(a) 
int [1:628847] 0 1 2 3 4 5 6 7 8 9 ... 
>summary(a) 
    Min. 1st Qu. Median Mean 3rd Qu. Max. 
     0 157200 314400 314400 471600 628800 
>max(a) 
[1] 628846 

एक data.frame के लिए:

> b <- data.frame(b = 0:628846) 
> str(b) 
'data.frame': 628847 obs. of 1 variable: 
$ b: int 0 1 2 3 4 5 6 7 8 9 ... 
> summary(b) 
     b   
Min. :  0 
1st Qu.:157212 
Median :314423 
Mean :314423 
3rd Qu.:471635 
Max. :628846 
> summary(b$b) 
    Min. 1st Qu. Median Mean 3rd Qu. Max. 
     0 157200 314400 314400 471600 628800 

ये परिणाम क्यों अलग हैं?

+0

कोशिश 'सारांश (ख $ ख, अंक = 6)' – kohske

+0

@kohske ठीक है, कि काम करता है। क्या इसका मतलब यह है कि वैक्टरों के लिए डिफ़ॉल्ट सारांश विधि डेटा.फ्रेम के मुकाबले अलग है? – wahalulu

+3

@wahalulu 'विधियों (सारांश)' का प्रयास करें और आप देखेंगे कि डेटा.फ्रेम में 'summary.data.frame' विधि चलती है लेकिन संख्याएं' summary.default' में हवाएं होती हैं। –

उत्तर

1

ऑब्जेक्ट a कक्षा integer है, b कक्षा data.frame है। एक data frame कुछ गुणों के साथ list है और data.frame (http://cran.r-project.org/doc/manuals/R-intro.html#Data-frames) के साथ list है। summary समेत कई फ़ंक्शन, अलग-अलग वर्गों की वस्तुओं को अलग-अलग प्रबंधित करें (देखें कि आप summary कक्षा lm की किसी ऑब्जेक्ट पर उपयोग कर सकते हैं और यह आपको कुछ अलग देता है)। आप b में हर घटकों के लिए समारोह summary लागू करना चाहते हैं, तो आप lapply इस्तेमाल कर सकते हैं:

> a <- 0:628846 
> b <- data.frame(b = 0:628846) 
> class(a) 
[1] "integer" 
> class(b) 
[1] "data.frame" 
> names(b) 
[1] "b" 
> length(b) 
[1] 1 
> summary(b[[1]]) # b[[1]] gives the first component of the list b 
    Min. 1st Qu. Median Mean 3rd Qu. Max. 
     0 157200 314400 314400 471600 628800 
> class(b$b) 
[1] "integer" 
> summary(b$b) 
    Min. 1st Qu. Median Mean 3rd Qu. Max. 
     0 157200 314400 314400 471600 628800 
> lapply(b,summary) 
$b 
    Min. 1st Qu. Median Mean 3rd Qu. Max. 
     0 157200 314400 314400 471600 628800 
> 
> # example of summary on a linear model 
> x <- rnorm(100) 
> y <- x + rnorm(100) 
> my.lm <- lm(y~x) 
> class(my.lm) 
[1] "lm" 
> summary(my.lm) 

Call: 
lm(formula = y ~ x) 

Residuals: 
    Min  1Q Median  3Q  Max 
-2.6847 -0.5460 0.1175 0.6610 2.2976 

Coefficients: 
      Estimate Std. Error t value Pr(>|t|)  
(Intercept) 0.04122 0.09736 0.423 0.673  
x   1.14790 0.09514 12.066 <2e-16 *** 
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 0.9735 on 98 degrees of freedom 
Multiple R-squared: 0.5977, Adjusted R-squared: 0.5936 
F-statistic: 145.6 on 1 and 98 DF, p-value: < 2.2e-16 
संबंधित मुद्दे