purrr

mtcars %>%
  split(.$cyl) %>% # from base R
  map(~ lm(mpg ~ wt, data = .)) %>%
  map(summary) %>%
  map_dbl("r.squared")
        4         6         8 
0.5086326 0.4645102 0.4229655 
tbl.mtcars <- mtcars %>% as.tbl
tbl.mtcars$cyl <- tbl.mtcars$cyl %>% as.factor() 
tbl.mtcars %>% summary
      mpg        cyl         disp             hp             drat             wt             qsec             vs               am              gear      
 Min.   :10.40   4:11   Min.   : 71.1   Min.   : 52.0   Min.   :2.760   Min.   :1.513   Min.   :14.50   Min.   :0.0000   Min.   :0.0000   Min.   :3.000  
 1st Qu.:15.43   6: 7   1st Qu.:120.8   1st Qu.: 96.5   1st Qu.:3.080   1st Qu.:2.581   1st Qu.:16.89   1st Qu.:0.0000   1st Qu.:0.0000   1st Qu.:3.000  
 Median :19.20   8:14   Median :196.3   Median :123.0   Median :3.695   Median :3.325   Median :17.71   Median :0.0000   Median :0.0000   Median :4.000  
 Mean   :20.09          Mean   :230.7   Mean   :146.7   Mean   :3.597   Mean   :3.217   Mean   :17.85   Mean   :0.4375   Mean   :0.4062   Mean   :3.688  
 3rd Qu.:22.80          3rd Qu.:326.0   3rd Qu.:180.0   3rd Qu.:3.920   3rd Qu.:3.610   3rd Qu.:18.90   3rd Qu.:1.0000   3rd Qu.:1.0000   3rd Qu.:4.000  
 Max.   :33.90          Max.   :472.0   Max.   :335.0   Max.   :4.930   Max.   :5.424   Max.   :22.90   Max.   :1.0000   Max.   :1.0000   Max.   :5.000  
      carb      
 Min.   :1.000  
 1st Qu.:2.000  
 Median :2.000  
 Mean   :2.812  
 3rd Qu.:4.000  
 Max.   :8.000  
kable(head(tbl.mtcars))


|  mpg|cyl | disp|  hp| drat|    wt|  qsec| vs| am| gear| carb|
|----:|:---|----:|---:|----:|-----:|-----:|--:|--:|----:|----:|
| 21.0|6   |  160| 110| 3.90| 2.620| 16.46|  0|  1|    4|    4|
| 21.0|6   |  160| 110| 3.90| 2.875| 17.02|  0|  1|    4|    4|
| 22.8|4   |  108|  93| 3.85| 2.320| 18.61|  1|  1|    4|    1|
| 21.4|6   |  258| 110| 3.08| 3.215| 19.44|  1|  0|    3|    1|
| 18.7|8   |  360| 175| 3.15| 3.440| 17.02|  0|  0|    3|    2|
| 18.1|6   |  225| 105| 2.76| 3.460| 20.22|  1|  0|    3|    1|
LS0tDQp0aXRsZTogImBwdXJycmAgRXhlcmNpc2UiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpbcHVycnJdKGh0dHBzOi8vcHVycnIudGlkeXZlcnNlLm9yZy8pDQoNCg0KYGBge3J9DQptdGNhcnMgJT4lDQogIHNwbGl0KC4kY3lsKSAlPiUgIyBmcm9tIGJhc2UgUg0KICBtYXAofiBsbShtcGcgfiB3dCwgZGF0YSA9IC4pKSAlPiUNCiAgbWFwKHN1bW1hcnkpICU+JQ0KICBtYXBfZGJsKCJyLnNxdWFyZWQiKQ0KYGBgDQoNCg0KDQpgYGB7cn0NCnRibC5tdGNhcnMgPC0gbXRjYXJzICU+JSBhcy50YmwNCg0KdGJsLm10Y2FycyRjeWwgPC0gdGJsLm10Y2FycyRjeWwgJT4lIGFzLmZhY3RvcigpIA0KDQp0YmwubXRjYXJzICU+JSBzdW1tYXJ5DQoNCmthYmxlKGhlYWQodGJsLm10Y2FycykpDQoNCmBgYA==