我有一个函数pva2()
,其输入包含data.table
,几个静态参数,然后是与data.table
中的列对应的列名列表。
gazemap <- function (x, y, ez, ...) structure(as.list(match.call()[-1]), class = "uneval")
mapping <- gazemap(x=smi_sxl, y=smi_syl, ez=smi_ezl)
samplerate <- 500
screen.resolution <- c(1680, 1050)
screen.dimensions <- c(473.76, 296.1)
pva2 <- function(data, samplerate, screen.resolution, screen.dimensions, mapping) {
.call <- formals(pva)
.call <- modifyList(.call, mapping)
.call$samplerate <- samplerate
.call$rx <- screen.resolution[1]
.call$ry <- screen.resolution[2]
.call$sh <- screen.dimensions[1]
.call$sw <- screen.dimensions[2]
data[,eval(as.call(c(quote(pva),.call)))]
}
pva <- function(x, y, samplerate, rx, ry, sw, sh, ez, ex = 0, ey = 0, timestamp = -1, minsac=.02, vt=1000, at=100000, blinks = NULL) {}
pva2()
本质上是pva()
的包装器,它包含必需参数和可选参数。我需要一种方法将输入data.table
中的列映射到函数pva()
。现在我通过构建一个调用来做这个,映射存储在一个列表中(基本上从ggplot中获取了aes()
的想法)。有没有人有更好的想法?或者提高效率的方法是什么?