Dplyr 编写一个以列名作为输入的函数 [英] Dplyr write a function with column names as inputs

查看:19
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆