Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
第二次使用dplyr::do时,按信息丢失组__R_Dplyr_Purrr - Fatal编程技术网

第二次使用dplyr::do时,按信息丢失组_

第二次使用dplyr::do时,按信息丢失组_,r,dplyr,purrr,R,Dplyr,Purrr,我在数据集的多个部分上运行多个模型,类似于(但有更多模型) 然而,结果并不是一个分组的TIBLE,所以我最终失去了cyl列来告诉我哪些术语属于哪个模型。如何避免这种损失再次添加groupby似乎会抛出一个错误 n、 b.我希望至少在第一部分(装配模型)中避免使用purrr,因为我运行不同类型的模型,然后需要重塑结果(d1),我喜欢带有do的进度条 n、 b.我想使用模型的$x组件,而不是原始数据,因为它们的数据具有正确的比例(我正在试验不同的预测值转换)我们可以通过嵌套先进行嵌套,然后再进行不嵌

我在数据集的多个部分上运行多个模型,类似于(但有更多模型)

然而,结果并不是一个分组的TIBLE,所以我最终失去了
cyl
列来告诉我哪些术语属于哪个模型。如何避免这种损失再次添加
groupby
似乎会抛出一个错误

n、 b.我希望至少在第一部分(装配模型)中避免使用purrr,因为我运行不同类型的模型,然后需要重塑结果(
d1
),我喜欢带有
do
的进度条


n、 b.我想使用模型的
$x
组件,而不是原始数据,因为它们的数据具有正确的比例(我正在试验不同的预测值转换)

我们可以通过
嵌套
先进行嵌套,然后再进行
不嵌套

mtcars %>% 
    group_by(cyl) %>% 
      nest(-cyl) %>% 
      mutate(mod_linear = map(data, ~ lm(mpg ~ disp + hp, data = .x, x = TRUE)),
           term  = map(mod_linear, ~ names(coef(.x))),
           pred = map(mod_linear, ~ .x$x %>%
                                       as_tibble %>% 
                                       summarise_all(sd) %>% 
                                       unlist )) %>%
   select(-data, -mod_linear) %>%
     unnest
# A tibble: 9 x 3
#    cyl term         pred
#  <dbl> <chr>       <dbl>
#1  6.00 (Intercept)   0  
#2  6.00 disp         41.6
#3  6.00 hp           24.3
#4  4.00 (Intercept)   0  
#5  4.00 disp         26.9
#6  4.00 hp           20.9
#7  8.00 (Intercept)   0  
#8  8.00 disp         67.8
#9  8.00 hp           51.0

如果我们从“d1”开始(基于OP的代码)

d1%>%
解组%>%
变异(mod_contents=map(mod_linear,~{
pred%
可存储%>%
汇总所有数据(sd)%>%
非上市
期限%
系数%>%
名字
tibble(术语,pred)
}))  %>%
选择(-mod_linear)%>%
不耐烦
d1 %>%
  # group_by(cyl) %>% 
  do(term = colnames(.$mod$x),
     pred_sd = apply(X = .$mod$x, MARGIN = 2, FUN = sd)) %>%
  unnest()
# # A tibble: 9 x 2
#          term  pred_sd
#         <chr>    <dbl>
# 1 (Intercept)  0.00000
# 2        disp 26.87159
# 3          hp 20.93453
# 4 (Intercept)  0.00000
# 5        disp 41.56246
# 6          hp 24.26049
# 7 (Intercept)  0.00000
# 8        disp 67.77132
# 9          hp 50.97689
mtcars %>% 
    group_by(cyl) %>% 
      nest(-cyl) %>% 
      mutate(mod_linear = map(data, ~ lm(mpg ~ disp + hp, data = .x, x = TRUE)),
           term  = map(mod_linear, ~ names(coef(.x))),
           pred = map(mod_linear, ~ .x$x %>%
                                       as_tibble %>% 
                                       summarise_all(sd) %>% 
                                       unlist )) %>%
   select(-data, -mod_linear) %>%
     unnest
# A tibble: 9 x 3
#    cyl term         pred
#  <dbl> <chr>       <dbl>
#1  6.00 (Intercept)   0  
#2  6.00 disp         41.6
#3  6.00 hp           24.3
#4  4.00 (Intercept)   0  
#5  4.00 disp         26.9
#6  4.00 hp           20.9
#7  8.00 (Intercept)   0  
#8  8.00 disp         67.8
#9  8.00 hp           51.0
mtcars %>% 
       group_by(cyl) %>% 
        nest(-cyl) %>% 
        mutate(mod_contents = map(data, ~ {
           mod <- lm(mpg ~ disp + hp, data = .x, x = TRUE)
           term <- names(coef(mod))
           pred <- mod$x %>%
                      as_tibble %>%
                            summarise_all(sd) %>%
                            unlist
            tibble(term, pred)        
            }
         )) %>%
      select(-data) %>%
      unnest    
# A tibble: 9 x 3
#    cyl term         pred
#  <dbl> <chr>       <dbl>
#1  6.00 (Intercept)   0  
#2  6.00 disp         41.6
#3  6.00 hp           24.3
#4  4.00 (Intercept)   0  
#5  4.00 disp         26.9
#6  4.00 hp           20.9
#7  8.00 (Intercept)   0  
#8  8.00 disp         67.8
#9  8.00 hp           51.0
d1 %>% 
   ungroup %>%
   mutate(mod_contents = map(mod_linear, ~ {

             pred <- .x$x %>%
                       as_tibble %>%
                        summarise_all(sd) %>%
                        unlist
            term <- .x %>%
                          coef %>% 
                          names 
            tibble(term, pred)                        

        }))  %>%
   select(-mod_linear) %>%
   unnest