将参数传递给data.table聚合函数
发布时间:2020-12-14 04:53:29 所属栏目:百科 来源:网络整理
导读:我有一个函数来计算变量的加权平均值,并使用data.table聚合语法按时间段对其进行分组.但是,我想以编程方式提供加权列的名称.有没有办法在仍然使用传统的data.table语法的同时实现这一目标?下面的函数wtmean1演示了我想做什么的想法(但它会产生错误).函数wtm
我有一个函数来计算变量的加权平均值,并使用data.table聚合语法按时间段对其进行分组.但是,我想以编程方式提供加权列的名称.有没有办法在仍然使用传统的data.table语法的同时实现这一目标?下面的函数wtmean1演示了我想做什么的想法(但它会产生错误).函数wtmean2的工作原理受到data.table FAQ的启发,但传递整个表达式更加麻烦,并且不可能在函数中提取加权列的名称,这可能是必需的.有没有办法让wtmean1工作,我传入的唯一参数是字符串中加权列的名称?
wtmean1 <- function(dt1,weight) { dt1[,weighted.mean(x,weight),by=timeperiod] } wtmean2 <- function(dt1,expr) { dt1[,eval(substitute(expr)),by=timeperiod] } mydata <- data.table(x=1:10,timeperiod=rep(1:2,5),wt1=rnorm(10),wt2=rnorm(10)) wtmean1(mydata,"wt1") # ERROR wtmean2(mydata,wt2)) 解决方法
你可以使用get:
wtmean1 <- function(dt1,get(weight)),by=timeperiod] } 使用您的示例数据: > set.seed(1) > mydata <- data.table(x=1:10,wt2=rnorm(10)) > wtmean1(mydata,"wt1") timeperiod V1 1: 1 -102.476925 2: 2 3.362326 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |