【发布时间】:2019-07-29 11:43:35
【问题描述】:
这是我想要来自data.table 的输出。
library(data.table)
dt_mtcars <- as.data.table(mtcars)
## desired output ----
dt_mtcars[mpg >20
, .(mean_mpg = mean(mpg)
,median_mpg = median(mpg))
, .(cyl, gear)]
cyl gear mean_mpg median_mpg
1: 6 4 21.000 21.00
2: 4 4 26.925 25.85
3: 6 3 21.400 21.40
4: 4 3 21.500 21.50
5: 4 5 28.200 28.20
我想通过将参数传递给函数来获得输出。
processFUN <- function(dt, where, select, group){
out <- dt[i=eval(parse(text = where))
,j=eval(parse(text = select))
,by=eval(parse(text = group))]
return(out)
}
report <- processFUN(dt_mtcars
,where= "mpg > 20"
,select= ".(mean_mpg = mean(mpg), median_mpg = median(mpg))"
,group= ".(cyl, gear)")
但是,我收到一条错误消息。
Error in .(cyl, gear) : could not find function "."
【问题讨论】:
-
对于未引用字符串的调用,此链接可能会有所帮助stackoverflow.com/questions/57122960/…
-
你的功能的目的是什么?
-
如果您更喜欢 SQL 语法,可以使用 sqldf:
sqldf("select cyl, gear, avg(mpg) mean_mpg, median(mpg) median_mpg from mtcars where mpg > 20 group by cyl, gear")
标签: r data.table