应用地图后保留列表名称

sim*_*321 4 r purrr

我正在传递一个列表,map并希望返回一个带有合并名称的data.frame对象.

例如:

library(tidyverse)
library(broom)

mtcars %>%
    split(.$vs) %>%
    map_df(~ tidy(lm(mpg ~ cyl, .)))

         term  estimate std.error statistic      p.value
1 (Intercept) 36.926733  3.690822 10.005017 2.727754e-08
2         cyl -2.728218  0.490297 -5.564419 4.272958e-05
3 (Intercept) 41.940000  5.778467  7.257981 1.003636e-05
4         cyl -3.802500  1.240052 -3.066404 9.781943e-03
Run Code Online (Sandbox Code Playgroud)

如何在其中提取名称(vs组)map并将其作为结果中的附加列添加,如下所示:

         term  estimate std.error statistic      p.value GROUP
1 (Intercept) 36.926733  3.690822 10.005017 2.727754e-08 0
2         cyl -2.728218  0.490297 -5.564419 4.272958e-05 0
3 (Intercept) 41.940000  5.778467  7.257981 1.003636e-05 1
4         cyl -3.802500  1.240052 -3.066404 9.781943e-03 1
Run Code Online (Sandbox Code Playgroud)

ali*_*ire 6

使用.id参数,该参数map_df将传递给dplyr::bind_rows:

library(purrr)

mtcars %>%
    split(.$vs) %>%
    map_df(~broom::tidy(lm(mpg ~ cyl, .)), .id = 'GROUP')
#>   GROUP        term  estimate std.error statistic      p.value
#> 1     0 (Intercept) 36.926733  3.690822 10.005017 2.727754e-08
#> 2     0         cyl -2.728218  0.490297 -5.564419 4.272958e-05
#> 3     1 (Intercept) 41.940000  5.778467  7.257981 1.003636e-05
#> 4     1         cyl -3.802500  1.240052 -3.066404 9.781943e-03
Run Code Online (Sandbox Code Playgroud)