将参数传递给dplyr切片

将参数传递给dplyr切片,r,R,我想使用slice在一个大的data.frame上获取最大值和位置(获取日期),我想对几个变量进行此操作。所以,我正在编写一个自定义函数来传递几个变量作为参数,但它不起作用 mvar <- "WD" peak_max <- dataf%>%group_by(year=format(date,"%Y"))%>% dplyr::sli

我想使用slice在一个大的data.frame上获取最大值和位置(获取日期),我想对几个变量进行此操作。所以,我正在编写一个自定义函数来传递几个变量作为参数,但它不起作用

           mvar <- "WD"
          
           peak_max <- dataf%>%group_by(year=format(date,"%Y"))%>%
                   dplyr::slice(which.max(!!mvar))
          
mvar%
dplyr::slice(哪个.max(!!mvar))
我使用了Summary,但在传递论点时也失败了:

            peak_max <- dataf%>%group_by(year=format(date,"%Y"))%>%
                    dplyr::summarise(date=date[which.max(!!mvar)], wd=max(!!mvar))
peak_max%group_by(年份=格式(日期,“%Y”))%>%
dplyr::总结(日期=日期[which.max(!!mvar)],wd=最大(!!mvar))

我还尝试了mvar,看起来您使用的是一种更老的方法
Enquo()
不再使用

在没有数据的情况下,很难确定您想要实现什么,但是,如果您直接传递变量(就像在
dplyr
管道中所做的那样,您可以在函数中包含它
{{var}}
。如果您要传递变量的字符串名称,则需要使用
.data[[var]]

库(tidyverse)
#直接传递变量
my_func_var%slice_max({{var})
}
虹膜%>%my_func_var(萼片长度)
#>萼片。长萼片。宽花瓣。长花瓣。宽种
#>1 7.9 3.8 6.4 2弗吉尼亚州
#将变量作为字符串传递
my_func_str%slice_max(.data[[var]])
}
我的变量%my\u func\u str(我的变量)
#>萼片。长萼片。宽花瓣。长花瓣。宽种
#>1 7.9 3.8 6.4 2弗吉尼亚州
由(v1.0.0)于2021年4月23日创建

(我使用了
slice\u max()
,因为它感觉更自然,但是
哪个.max()
似乎也起作用了)