(使用exec进行整洁,扫视,增强)

问题描述 投票:1回答:1

我从purrr文档中看到,应该可以使用map(list(fn1, fn2, fn3), exec, !!!args)语法或类似语法将函数列表映射到参数上。对于broom函数tidyglanceaugment,通常必须补充do,这将如何工作?我几乎总是喜欢在相同的数据和模型上同时执行这三个功能。我当然可以明确地做到这一点:

# works but is repetitive
MY_MODEL <- hp ~ cyl
my_glance <- mtcars %>% do(glance(lm(data = ., formula = MY_MODEL)))
my_tidy <- mtcars %>% do(tidy(lm(data = ., formula = MY_MODEL)))
my_augment <- mtcars %>% do(augment(lm(data = ., formula = MY_MODEL)))

[我怀疑有一种更好的,更紧凑的方法来执行此操作,而不必每次都重新输入...lm(data = ., formula = MY_MODEL...,但我无法弄清楚。我尝试过

# doesn't work
omnibroom <- function(df, model){
    map(list(glance, tidy, augment),
        exec,
        ~{(do(.x(lm(data = df, formula = model))))}
        )
    }

omnibroom(mtcars, MY_MODEL)

但是我想我不太理解!!!语法。

在相同的模型和数据上是否有一个简洁的习惯来调用这三个扫帚功能?>

我从purrr文档中看到,应该可以使用map(list(fn1,fn2,fn3),exec,!!! args)语法或类似语法将函数列表映射到参数上。怎么会这样...

dplyr purrr rlang broom
1个回答
1
投票

可以通过简单的重构在两行中完成此操作。不需要do!!!

© www.soinside.com 2019 - 2024. All rights reserved.