2015-08-27 8 views
8

जब मैं निम्नलिखित तरीके से broom:::glance का उपयोग करें:एक भी एलएम वस्तु के साथ एक dplyr कार्यप्रवाह में उपयोग करते हुए `झाड़ू ::: glance` विफल रहता है

library(dplyr) 
library(broom) 
mtcars %>% do(model = lm(mpg ~ wt, .)) %>% glance(model) 

मैं

Error in complete.cases(x) : invalid 'type' (list) of argument 

मिल हालांकि, जब मैं जोड़ने के एक group_by:

mtcars %>% group_by(am) %>% do(model = lm(mpg ~ wt, .)) %>% glance(model) 

देता है अपेक्षित परिणाम:

+०१२३५१६४१०६१
Source: local data frame [2 x 12] 
Groups: am 

    am r.squared adj.r.squared sigma statistic p.value df logLik AIC BIC deviance df.residual 
1 0  0.589   0.565 2.53  24.4 1.25e-04 2 -43.5 93.1 95.9 108.7   17 
2 1  0.826   0.810 2.69  52.3 1.69e-05 2 -30.2 66.4 68.1  79.3   11 

क्या मुझे यहां कुछ याद आ रही है, या क्या यह dplyr/झाड़ू में एक त्रुटि है?

+0

क्या यह लंबाई 1 की सूची से संबंधित हो सकता है? 'लाइब्रेरी (tidyr); unnest (सूची (mtcars, mtcars), जीआर)%>% group_by (जीआर)%>% करते हैं (मॉडल = एलएम (एमपीजी ~ wt,।))%>% नज़र (मॉडल) 'काम करता है – akrun

+0

ऐसा लगता है कि यह वास्तव में ऐसा लगता है कि यह काम नहीं करता है जब 'do' की आउटपुट सूची केवल लंबाई की एक सूची है। –

+0

अच्छी पकड़: ऐसा इसलिए है क्योंकि एक समूह रहित tbl_df पर 'do'' rowwise_df' वापस नहीं करता है, इसलिए 'glance.rowwise_df' विधि लागू नहीं होती है। मैंने [इसके लिए एक मुद्दा] खोला है (https://github.com/dgrtwo/broom/issues/77) और जल्द ही इसे ठीक कर दिया होगा! –

उत्तर

8

यह वह जगह है do, जब एक असमूहीकृत मेज पर प्रदर्शन किया, एक tbl_df बजाय एक rowwise_df में परिणाम है, जिसका अर्थ झाड़ू एक अलग विधि का इस्तेमाल किया है। मैं नवीनतम विकास संस्करण में fixed this है, अब आप क्या कर सकते हैं जैसे कि:

mtcars %>% do(model = lm(mpg ~ wt, .)) %>% glance(model) 
#> r.squared adj.r.squared sigma statistic  p.value df logLik 
#> 1 0.7528328  0.7445939 3.045882 91.37533 1.293959e-10 2 -80.01471 
#>  AIC  BIC deviance df.residual 
#> 1 166.0294 170.4266 278.3219   30 

मैं इस जल्द ही क्रैन पर है करने के लिए (झाड़ू 0.4) आशा, या आप devtools::install_github("dgrtwo/broom") साथ स्थापित कर सकते हैं। इस बीच, आप वांछित व्यवहार प्राप्त करने के लिए एक अस्थायी समूह कॉलम का भी उपयोग कर सकते हैं:

mtcars %>% 
    group_by(g = 1) %>% 
    do(model = lm(mpg ~ wt, .)) %>% 
    glance(model) 
#> Source: local data frame [1 x 12] 
#> Groups: g 
#> 
#> g r.squared adj.r.squared sigma statistic  p.value df logLik 
#> 1 1 0.7528328  0.7445939 3.045882 91.37533 1.293959e-10 2 -80.01471 
#> Variables not shown: AIC (dbl), BIC (dbl), deviance (dbl), df.residual 
#> (int) 
संबंधित मुद्दे