【发布时间】:2014-08-13 05:04:12
【问题描述】:
我有一份报告需要应用于不同名称的 data.tables [j 和 by]。
我通过将参数包装在eval(substitute(value)) 函数中来完成它的唯一方法。这会降低代码的可读性。
我已将 j 参数命名为“变量”,但我想将函数的 j 参数传递给 setnames 函数。
所以,问题是:
有没有办法避免eval(substitute(value)) 构造?
我可以将 j 参数传递给 setnames 函数吗?
library(data.table)
library(ggplot2)
data(diamonds, package = "ggplot2")
dt = as.data.table(diamonds)
var.report = function(df, value, by.value) {
var.report = df[, list( .N,
sum(is.finite(eval(substitute(value)))), # count values
sum(is.na(eval(substitute(value)))) # count NA
), by = eval(substitute(by.value))]
setnames(var.report, c("variable", "N","n.val","n.NA"))
return(var.report)
}
var.report(dt, depth, clarity)
【问题讨论】:
标签: r data.table