Dplyr用列名作为输入编写函数 [英] Dplyr write a function with column names as inputs
本文介绍了Dplyr用列名作为输入编写函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在编写要在dplyr中的多个列上使用的函数,但是在将列名作为dplyr函数的输入传递时遇到了麻烦。
I'm writing a function that I'm going to use on multiple columns in dplyr, but I'm having trouble passing column names as inputs to functions for dplyr.
以下是我要执行的操作示例:
Here's an example of what I want to do:
df<-tbl_df(data.frame(group=rep(c("A", "B"), each=3), var1=sample(1:100, 6), var2=sample(1:100, 6)))
example<-function(colname){
df %>%
group_by(group)%>%
summarize(output=mean(sqrt(colname)))%>%
select(output)
}
example("var1")
输出应类似于
df %>%
group_by(group)%>%
summarize(output=mean(sqrt(var1)))%>%
select(output)
我发现了一些类似的问题,但是没有什么可以直接应用到我的问题上的,因此可以提供任何帮助。我已经尝试了一些涉及eval的解决方案,但老实说,我不知道我应该将什么传递给eval。
I've found a few similar questions, but nothing that I could directly apply to my problem, so any help is appreciated. I've tried some solutions involving eval, but I honestly don't know what exactly I'm supposed to be passing to eval.
推荐答案
这是您期望的吗?
df<-tbl_df(data.frame(group=rep(c("A", "B"), each=3), var1=sample(1:100, 6), var2=sample(1:100, 6)))
example<-function(colname){
df %>%
group_by(group)%>%
summarize(output=mean(sqrt(colname)))%>%
select(output)
}
example( quote(var1) )
#-----
Source: local data frame [2 x 1]
output
1 7.185935
2 8.090866
这篇关于Dplyr用列名作为输入编写函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文