简体   繁体   English

“错误:参数 1 必须是数据帧或命名的原子向量。 ” 对于 `purrr::map_dfr()`

[英]“Error: Argument 1 must be a data frame or a named atomic vector. ” for `purrr::map_dfr()`

I was trying to run a regression models on multiple subgroups of a dataframe using purrr::map_dfr() , but somehow I get this somewhat weird error.我试图使用purrr::map_dfr()在数据帧的多个子组上运行回归模型,但不知何故我得到了这个有点奇怪的错误。

library(dplyr)
library(purrr)

# Create some data
test_df = map_dfr(seq_len(5), ~mtcars, .id = 'group')

# Run regression on subgroups
map_dfr(seq_len(5),
                ~ function(.x){
                  glm(am ~ mpg + cyl + disp + hp + drat + wt + qsec + vs + gear + carb, 
                            family = binomial, 
                            data = test_df[group == .x,]) %>% 
                    coefficients()
                },
                .id = 'group')

Error: Argument 1 must be a data frame or a named atomic vector.
Run `rlang::last_error()` to see where the error occurred.

Any suggestion will be appreciated.任何建议将不胜感激。

If we are using function(x) , there is no need for ~ or viceversa.如果我们使用function(x) ,则不需要~或反之亦然。 It is a lambda function compact syntax in tidyverse它是tidyverse的 lambda 函数紧凑语法

map_dfr(seq_len(5),
                ~ {
                  glm(am ~ mpg + cyl + disp + hp + drat + wt + qsec + vs + gear + carb, 
                            family = binomial, 
                            data = test_df[test_df$group == .x,]) %>% 
                    coefficients()
                },
                .id = 'group')

-output -输出

# A tibble: 5 x 12
  group `(Intercept)`    mpg   cyl   disp    hp  drat    wt  qsec    vs  gear  carb
  <chr>         <dbl>  <dbl> <dbl>  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1             -11.6 -0.881  2.53 -0.416 0.344  23.2  7.44 -7.58 -47.0  42.9 -21.6
2 2             -11.6 -0.881  2.53 -0.416 0.344  23.2  7.44 -7.58 -47.0  42.9 -21.6
3 3             -11.6 -0.881  2.53 -0.416 0.344  23.2  7.44 -7.58 -47.0  42.9 -21.6
4 4             -11.6 -0.881  2.53 -0.416 0.344  23.2  7.44 -7.58 -47.0  42.9 -21.6
5 5             -11.6 -0.881  2.53 -0.416 0.344  23.2  7.44 -7.58 -47.0  42.9 -21.6

NOTE: output is the same as the input example was using the same data注意:输出与使用相同数据的输入示例相同

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM