pmap_uu变量以列表形式在data.frames上运行

pmap_uu变量以列表形式在data.frames上运行,r,purrr,R,Purrr,我记得purrr::pmap_*可以将data.frame视为一个列表,但语法让我难以理解 假设我们想要为mtcars$vs和mtcars$am的每个值安装一个单独的lm对象 但这会导致一个错误。更明确地将这些变量声明为单独的列表具有所需的效果 list( d1$vs, d1$am, d1$coef ) %>% pmap_dfr( function(i, j, k) k %>% mutate( vs = i,

我记得purrr::pmap_*可以将data.frame视为一个列表,但语法让我难以理解

假设我们想要为mtcars$vs和mtcars$am的每个值安装一个单独的lm对象

但这会导致一个错误。更明确地将这些变量声明为单独的列表具有所需的效果

list(
  d1$vs,
  d1$am,
  d1$coef
  ) %>% 
  pmap_dfr(
    function(i, j, k)
      k %>% 
      mutate(
        vs = i,
        am = j
      )
  )

pmap_*是否有一种简洁的方法将data.frame视为列表?

我们可以使用标准选项提取组件..1、..2等


我们可以使用标准选项提取组件..1、..2等


这是因为第二个列表没有names属性。如果你不命名d1,它会起作用。在第二个示例中使用list函数并没有什么区别,只是它删除了名称,因为两个对象都是列表数据帧都是列表

d1[, -3] %>% 
  unname %>% 
  pmap_dfr(
    function(i, j, k)
      k %>% 
      mutate(
        vs = i,
        am = j
      )
  )


# # A tibble: 8 x 7
#   term        estimate std.error statistic   p.value    vs    am
#   <chr>          <dbl>     <dbl>     <dbl>     <dbl> <dbl> <dbl>
# 1 (Intercept)    42.4      3.30      12.8  0.000213      0     1
# 2 wt             -7.91     1.14      -6.93 0.00227       0     1
# 3 (Intercept)    44.1      6.96       6.34 0.00144       1     1
# 4 wt             -7.77     3.36      -2.31 0.0689        1     1
# 5 (Intercept)    31.5      8.98       3.51 0.0171        1     0
# 6 wt             -3.38     2.80      -1.21 0.281         1     0
# 7 (Intercept)    25.1      3.51       7.14 0.0000315     0     0
# 8 wt             -2.44     0.842     -2.90 0.0159        0     0
您也可以使用实验平台上的wap


这是因为第二个列表没有names属性。如果你不命名d1,它会起作用。在第二个示例中使用list函数并没有什么区别,只是它删除了名称,因为两个对象都是列表数据帧都是列表

d1[, -3] %>% 
  unname %>% 
  pmap_dfr(
    function(i, j, k)
      k %>% 
      mutate(
        vs = i,
        am = j
      )
  )


# # A tibble: 8 x 7
#   term        estimate std.error statistic   p.value    vs    am
#   <chr>          <dbl>     <dbl>     <dbl>     <dbl> <dbl> <dbl>
# 1 (Intercept)    42.4      3.30      12.8  0.000213      0     1
# 2 wt             -7.91     1.14      -6.93 0.00227       0     1
# 3 (Intercept)    44.1      6.96       6.34 0.00144       1     1
# 4 wt             -7.77     3.36      -2.31 0.0689        1     1
# 5 (Intercept)    31.5      8.98       3.51 0.0171        1     0
# 6 wt             -3.38     2.80      -1.21 0.281         1     0
# 7 (Intercept)    25.1      3.51       7.14 0.0000315     0     0
# 8 wt             -2.44     0.842     -2.90 0.0159        0     0
您也可以使用实验平台上的wap

d1[, -3]  %>% 
    pmap_dfr(~ ..3 %>%
                  mutate(vs = ..1, am = ..2))
# A tibble: 8 x 7
#  term        estimate std.error statistic   p.value    vs    am
#  <chr>          <dbl>     <dbl>     <dbl>     <dbl> <dbl> <dbl>
#1 (Intercept)    42.4      3.30      12.8  0.000213      0     1
#2 wt             -7.91     1.14      -6.93 0.00227       0     1
#3 (Intercept)    44.1      6.96       6.34 0.00144       1     1
#4 wt             -7.77     3.36      -2.31 0.0689        1     1
#5 (Intercept)    31.5      8.98       3.51 0.0171        1     0
#6 wt             -3.38     2.80      -1.21 0.281         1     0
#7 (Intercept)    25.1      3.51       7.14 0.0000315     0     0
#8 wt             -2.44     0.842     -2.90 0.0159        0     0
d1[, -3] %>% 
  unname %>% 
  pmap_dfr(
    function(i, j, k)
      k %>% 
      mutate(
        vs = i,
        am = j
      )
  )


# # A tibble: 8 x 7
#   term        estimate std.error statistic   p.value    vs    am
#   <chr>          <dbl>     <dbl>     <dbl>     <dbl> <dbl> <dbl>
# 1 (Intercept)    42.4      3.30      12.8  0.000213      0     1
# 2 wt             -7.91     1.14      -6.93 0.00227       0     1
# 3 (Intercept)    44.1      6.96       6.34 0.00144       1     1
# 4 wt             -7.77     3.36      -2.31 0.0689        1     1
# 5 (Intercept)    31.5      8.98       3.51 0.0171        1     0
# 6 wt             -3.38     2.80      -1.21 0.281         1     0
# 7 (Intercept)    25.1      3.51       7.14 0.0000315     0     0
# 8 wt             -2.44     0.842     -2.90 0.0159        0     0
d1[, -3] %>% 
  pmap_dfr(
    function(vs, am, coef)
      coef %>% 
      mutate(
        vs = vs,
        am = am
      )
  )


# # A tibble: 8 x 7
#   term        estimate std.error statistic   p.value    vs    am
#   <chr>          <dbl>     <dbl>     <dbl>     <dbl> <dbl> <dbl>
# 1 (Intercept)    42.4      3.30      12.8  0.000213      0     1
# 2 wt             -7.91     1.14      -6.93 0.00227       0     1
# 3 (Intercept)    44.1      6.96       6.34 0.00144       1     1
# 4 wt             -7.77     3.36      -2.31 0.0689        1     1
# 5 (Intercept)    31.5      8.98       3.51 0.0171        1     0
# 6 wt             -3.38     2.80      -1.21 0.281         1     0
# 7 (Intercept)    25.1      3.51       7.14 0.0000315     0     0
# 8 wt             -2.44     0.842     -2.90 0.0159        0     0
library(rap)

d1[, -3] %>% 
  wap( ~ coef %>% 
          mutate(
            vs = vs,
            am = am)) %>% 
  bind_rows
# # A tibble: 8 x 7
#   term        estimate std.error statistic   p.value    vs    am
#   <chr>          <dbl>     <dbl>     <dbl>     <dbl> <dbl> <dbl>
# 1 (Intercept)    42.4      3.30      12.8  0.000213      0     1
# 2 wt             -7.91     1.14      -6.93 0.00227       0     1
# 3 (Intercept)    44.1      6.96       6.34 0.00144       1     1
# 4 wt             -7.77     3.36      -2.31 0.0689        1     1
# 5 (Intercept)    31.5      8.98       3.51 0.0171        1     0
# 6 wt             -3.38     2.80      -1.21 0.281         1     0
# 7 (Intercept)    25.1      3.51       7.14 0.0000315     0     0
# 8 wt             -2.44     0.842     -2.90 0.0159        0     0