我有一个包含逻辑表达式的函数,用于对data.table
的行进行子集.我希望通过一个字符串和一个表示函数参数的列名向量来调用该函数(类似于使用do.call
).然而,我不知道如何接近这一意图.
在一个简单的、可重现的例子中:
#function with logical return value
myfunc <- function(mpg, cyl) {
mpg/cyl > 7
}
#name of function
funcname <- "myfunc"
#vector of column names, corresponding to the function parameters
cols <- c("mpg", "cyl")
#data.table to be subsetted
dt <- setDT(copy(mtcars))
我正在寻找的是一个传递变量dt
、funcname
和cols
的函数,以获得以下结果,因为它与dt[mpg/cyl > 7, ]
相同:
#desired function
subsetfunc(dt, funcname, cols)
mpg cyl disp hp drat wt qsec vs am gear carb
1: 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
2: 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
3: 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
4: 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2