1
我有一个报告,需要应用于不同名称的data.tables [j和by]。 我通过将参数包含在eval(substitute(value))
函数中来完成它的唯一方法。这使得代码不易读。 我已经命名j参数“变量”,但我想将函数的j参数传递给setnames
函数。将变量和名称传递给data.table函数
所以,问题是:
有没有办法避免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)
谢谢!这工作。关于第二个问题:在最终结果中,“by.value”被称为“变量”。我希望已经有了这个名字,因为我在函数调用中明确指出了该变量的名称。现在我必须添加手动设置名称(df,“variable”,“by.value”)。 – Henk