r - 我怎样才能接受...的第一个输入?
问题描述
我想创建一个函数,其中的第一个输入create_df
使用 tidyeval 变成数字 1。这里应该只是cyl
列。
如何拉出第一个“输入” ...
?
library(dplyr, quietly = T)
create_df <- function(...){
var <- enquos(...)
first <- as_label(quos(...))
mtcars %>%
group_by(!!!var) %>%
summarise(mean = mean(mpg)) %>%
mutate(!!first := 1)
}
create_df(cyl, am)
#> `summarise()` regrouping output by 'cyl' (override with `.groups` argument)
#> # A tibble: 6 x 4
#> # Groups: cyl [3]
#> cyl am mean `<quos>`
#> <dbl> <dbl> <dbl> <dbl>
#> 1 4 0 22.9 1
#> 2 4 1 28.1 1
#> 3 6 0 19.1 1
#> 4 6 1 20.6 1
#> 5 8 0 15.0 1
#> 6 8 1 15.4 1
由reprex 包于 2020-07-01 创建(v0.3.0)
解决方案
您可以通过简单地取出第一个元素来将第一个变量从点中取出vars
(感谢莱昂内尔亨利指出这一点)。
create_df <- function(...){
var <- enquos(...)
first <- as_label(var[[1]])
mtcars %>%
group_by(!!!var) %>%
summarise(mean = mean(mpg)) %>%
mutate(!!first := 1)
}
create_df(cyl, am)
#> `summarise()` regrouping output by 'cyl' (override with `.groups` argument)
#> # A tibble: 6 x 3
#> # Groups: cyl [1]
#> cyl am mean
#> <dbl> <dbl> <dbl>
#> 1 1 0 22.9
#> 2 1 1 28.1
#> 3 1 0 19.1
#> 4 1 1 20.6
#> 5 1 0 15.0
#> 6 1 1 15.4
推荐阅读
- excel - 添加到集合中的值被重复多次
- excel - 尝试将单元格值相乘时键入不匹配
- javascript - 文本更改不起作用时的角度淡入/淡出
- python - 如何将通过 askdirectory() 方法生成的路径从一个回调传递到 tkinter 中的另一个回调
- java - Gradle 构建两个项目(带有名称的项目和一个项目库)
- javascript - 如何解决未应用滑出动画的问题
- wcf - 在 wcf 肥皂邮递员中发送 int 数组
- r - ggplot2 中的 stat_summary_bin 如何处理?
- pyspark - 从多个文件夹中读取 Delta 表
- javascript - 如何创建可以从 material-ui 访问 ThemeProvider 的自定义 React 元素