【发布时间】:2020-02-23 19:42:18
【问题描述】:
假设我有以下 data.table 并希望通过引用存储在向量中的变量来获得以下输出:
dt <- data.table(a = rep(1, 3),
b = rep(2, 3))
x <- 'a'
y <- 'b'
dt[, .(sum(get(x)), mean(get(y)))]
V1 V2
1: 3 2
很酷,它有效。但现在我想做一个函数,然后做类似的事情:
foo <- function(arg1, arg2) {
dt[, .(sum(get(arg1)), mean(get(arg2)))]
}
foo(x, y)
意识到它有效,我想避免打电话给所有gets,并做类似的事情:
foo <- function(arg1, arg2) {
eval(substitute(dt[, .(sum(arg1), mean(arg2))]))
}
foo(x, y) # or foo('x', 'y')
但这失败了。关于如何以类似于多次调用get 的方式一次评估所有参数的任何想法?
【问题讨论】:
标签: r data.table