在带引号变量的函数中使用dplyr n_distinct
我试图在函数中使用dplyr,将列名作为变量传入,然后在summary函数中与n_distinct一起使用 我知道使用dplyr编程变得更容易了,如vignette(nse)中所述,使用Summary、arrange等功能。我也尝试过lazyeval的各种interp组合。n_distinct响应带有“n_distinct()的输入必须是数据集中的单个变量名”(这很有意义,只是变量名在字符串中…) 这在函数外部可以正常工作(提到的是data.frame中的列名): 这是我的第一次努力:在带引号变量的函数中使用dplyr n_distinct,r,dplyr,R,Dplyr,我试图在函数中使用dplyr,将列名作为变量传入,然后在summary函数中与n_distinct一起使用 我知道使用dplyr编程变得更容易了,如vignette(nse)中所述,使用Summary、arrange等功能。我也尝试过lazyeval的各种interp组合。n_distinct响应带有“n_distinct()的输入必须是数据集中的单个变量名”(这很有意义,只是变量名在字符串中…) 这在函数外部可以正常工作(提到的是data.frame中的列名): 这是我的第一次努力: getP
getProportions <- function(datain, id_column) {
overall_total <- summarize(datain, count=n_distinct(id_column))[1,1]
}
getProportions(measures, "mention")
getPirations正如评论中所指出的,正确的方法是我的第二个选项,显然我从未完全测试过它(我在var的左边=interp调用的一部分):
f我不确定问题出在哪里,因为这对我有效:f再次感谢(我编辑了答案)。这不是问题;我应该删除它吗?您可以删除它,或者自己回答并接受它,因为其他人可能会发现它在将来很有用。我需要限定interp函数的名称空间,以使其工作,即lazyeval::interp确实也为我工作。但是我发现在任何dplyr计算中,length(unique(col))
比n_distinct(col)
快得多。不知道为什么。
getProportions <- function(datain, id_column) {
overall_total <- summarize(datain, count=n_distinct(id_column))[1,1]
}
getProportions(measures, "mention")
overall_total <- summarize_(datain, count=interp(~n_distinct(var),var=as.name(id_column)))[1,1]
f <- function(data, col) {
summarise_(data, count = interp(~n_distinct(var), var = as.name(col)))
}
f(mtcars, "cyl")