有没有一种方法可以使用/计算字符串表达式而不是
eval(parse(text = ...))
据我所知,
eval(parse())
i
以及
j
by
在使用中。我曾经
verbose=TRUE
GForce
在使用表达式时不使用,所以我想问题是如何同时使用两者
G力
library(data.table)
N = 10**5
DT = data.table(x1 = sample(1:1000, size = N , replace = TRUE),
x2 = sample(1:500, size = N , replace = TRUE),
y1 = runif(N,1,10),
y2 = runif(N,0,1))
system.time({
DT_agg = DT[, .(sum_y1 = sum(y1)), by = c('x1','x2'), verbose=TRUE]
})
# Making each group and running j (GForce TRUE)
# user system elapsed
# 0.02 0.00 0.02
expr = "sum_y1 = sum(y1)"
system.time({
DT_agg = DT[, .(eval(parse(text = expr))), by = c('x1','x2'), verbose=TRUE]
})
# Making each group and running j (GForce FALSE)
# user system elapsed
# 27.72 0.00 28.11