我正在尝试在函数中使用dplyr,将列名作为变量传入,然后在汇总函数中与n_distinct一起使用 .
我理解用dplyr进行编程变得更容易了,使用了summary_(arrange)(nse)中描述的summarize,arrange_ etc函数 . 我也尝试过来自lazyeval的各种interp组合 . 带有“输入到n_distinct()的n_distinct响应必须是来自数据集的单个变量名称”(这是有意义的,它只是我在字符串中有变量名...)
这在函数外部工作正常(提到data.frame中的列名):
summarize(data, count=n_distinct(mention))
这是我的第一次努力:
getProportions <- function(datain, id_column) {
overall_total <- summarize(datain, count=n_distinct(id_column))[1,1]
}
getProportions(measures, "mention")
在阅读了NSE文档和一些关于使用dplyr进行编程的线程之后,我尝试了:
overall_total <- summarize_(datain, count=interp(~n_distinct(var),var=as.name(id_column)))[1,1]
但无济于事 . 有任何想法吗?几乎看起来需要n_distinct_()?
Edit 我的道歉和感谢 . 你是对的,interp版本确实有效,似乎我从来没有完全击中那个完整的组合 . 我查看了我的旧版本,当我将var部分改为正确时,我使用了plain summary(),当我使用summarize_()时,我停止了inter =调用的var =部分 . 叹 . 我没有用两个版本生成一个完整的工作示例 .
1 回答
正如评论中所指出的,正确的方法是我的第二个选项,显然我从未完全测试过(我留下了var = interp调用的一部分 . ):