用dplyr编程,使用字符串作为输入 [英] Programming with dplyr using string as input
本文介绍了用dplyr编程,使用字符串作为输入的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
my_summarise< - function(df,var){
var< - enquo(var)
df%>%
group_by(!! var)%>%
summary(a = mean(a))
}
my_summarise(df,g1)
但是,我想写功能而不是 g1
I可以提供g1
,我无法围绕如何做到这一点。
解决方案
Afaik,你可以使用 as.name
或 sym
(从 rlang
包 - 我不知道如果 dplyr
将导入它最终):
library(dplyr)
my_summarise< - function(df,var){
var< - rlang :: sym(var)
df%>%
group_by(!! var)%>%
summaryize(mpg = mean(mpg))
}
或
my_summarise< - function(df,var){
var < - as.name(var)
df%>%
group_by(!! var) %>%
总结(mpg =平均(mpg))
}
my_summarise(mtcars,cyl)
##一个琐事:3×2
#cyl mpg
#< dbl> < DBL>
#1 4 26.66364
#2 6 19.74286
#3 8 15.10000
I would like to write a function that uses dplyr inside and I supply variable names as strings. Unfortunately dplyr-s use of NSE makes it rather complicated. From Programming with dplyr I get the following example
my_summarise <- function(df, var) {
var <- enquo(var)
df %>%
group_by(!!var) %>%
summarise(a = mean(a))
}
my_summarise(df, g1)
However, I would like to write function where instead of g1
I could provide "g1"
and I am not able to wrap my head around how to do that.
解决方案
Afaik, you could use as.name
or sym
(from the rlang
package - I dunno if dplyr
will import it eventually):
library(dplyr)
my_summarise <- function(df, var) {
var <- rlang::sym(var)
df %>%
group_by(!!var) %>%
summarise(mpg = mean(mpg))
}
or
my_summarise <- function(df, var) {
var <- as.name(var)
df %>%
group_by(!!var) %>%
summarise(mpg = mean(mpg))
}
my_summarise(mtcars, "cyl")
# # A tibble: 3 × 2
# cyl mpg
# <dbl> <dbl>
# 1 4 26.66364
# 2 6 19.74286
# 3 8 15.10000
这篇关于用dplyr编程,使用字符串作为输入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文