【发布时间】:2019-06-18 19:26:53
【问题描述】:
我正在尝试将 R data.table 代码 sn-p 转换为适当的函数,但我没有成功。
我想用这段代码总结一个变量:
library(data.table)
mtcars_dt <-
data.table(mtcars)
# Expression
mtcars_dt[,list(.N),by=cyl][order(cyl),list(cyl,N,Proportion=N/sum(N))]
结果是一个 data.table(如预期的那样):
cyl N Proportion
1: 4 11 0.34375
2: 6 7 0.21875
3: 8 14 0.43750
然后我希望创建一个函数并将此函数应用于多个变量,并在循环的每次迭代中生成一个 data.table 应用该函数:
# turn into function and apply loop, returning DT from each iteration
var_list <- c('cyl','gear')
for (i in var_list){
# generalize the code above
}
我不确定最好的方法。我尝试了这个解决方案,但我丢失了第一列中的变量名。我想知道我是否走错了 eval(quote(...))
# My attempt, not working yet!
var_list <- c(quote(cyl),quote(gear))
f_numeric_cat <-
function(dt,var1) {
dt[,list(.N),by=eval(var1)][order(eval(var1)),Proportion:=N/sum(N)][]
}
for (i in var_list){
print(f_numeric_cat(mtcars_dt,i))
}
var1 N Proportion
1: 6 7 0.21875
2: 4 11 0.34375
3: 8 14 0.43750
var1 N Proportion
1: 4 12 0.37500
2: 3 15 0.46875
3: 5 5 0.15625
【问题讨论】:
标签: r data.table