"Error: Argument 1 must be a data frame or a named atomic vector. " for `purrr::map_dfr()`
"Error: Argument 1 must be a data frame or a named atomic vector. " for `purrr::map_dfr()`
我试图 运行 使用 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.
如有任何建议,我们将不胜感激。
如果我们使用 function(x)
,则不需要 ~
,反之亦然。它是 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')
-输出
# 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
注意:输出与使用相同数据的输入示例相同
我试图 运行 使用 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.
如有任何建议,我们将不胜感激。
如果我们使用 function(x)
,则不需要 ~
,反之亦然。它是 tidyverse
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')
-输出
# 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
注意:输出与使用相同数据的输入示例相同