我想知道是否有更快的方法将一组列乘以向量中的值(基本上应用回归公式)。我看到this post,但它需要将data.table转换为低效的矩阵。
我也看到this old post包含一个for循环,但是我测试的循环比我在这里的循环慢得多,并且考虑到帖子的年龄,我想知道是否还有其他方法。
还有其他建议吗?
set.seed(100)
N = 2e7L
DT1 = data.table(id = sample(letters[1:10], N, TRUE),
a = sample(0:3, N, TRUE),
b = sample(0:3, N, TRUE),
c = sample(0:3, N, TRUE),
d = sample(0:3, N, TRUE))
v <- c(0.2232332, 0.332424, 0.3322525250, 0.32342323432)
# 528.4188 ms
microbenchmark({
DT1[,blah:=a*v[1] + b*v[2] + c*v[3] + d*v[4]]
}, times = 1, unit = "ms")