gpt4 book ai didi

r - 将别名列传递给函数以用于 data.table `by=` 参数

转载 作者:行者123 更新时间:2023-12-02 01:40:35 25 4
gpt4 key购买 nike

我希望能够对按不同属性分组的 data.table 进行大量批量处理。

我有一个函数,它允许通过将要分组的列的字符串传递给它来完成此操作:

library(data.table)

myaggfunction<-function(mydt,aggcol,type){
mydt[,lapply(.SD, sum), by=aggcol][,Type:=type]
}

myaggfunction(as.data.table(iris),"Species","Test")[]

但是,某些列需要在输出中使用别名。我知道我可以将字符串传递给 by但是如何传递不在函数参数级别进行评估的等效列表,例如
myaggfunction(as.data.table(iris),list(IrisSpecies=Species),"Test")[]

最佳答案

您可以使用 substitute获取未计算的表达式并将其传递给 bydata.table .

library(data.table)

myaggfunction<-function(mydt,aggcol,type){
aggcol <- substitute(aggcol)
mydt[,lapply(.SD, sum), by=aggcol][,Type:=type]
}

myaggfunction(as.data.table(iris),"Species","Test")[]
myaggfunction(as.data.table(iris),list(IrisSpecies=Species),"Test")[]

关于r - 将别名列传递给函数以用于 data.table `by=` 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28808376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com