【发布时间】:2018-04-09 17:01:18
【问题描述】:
我有以下功能可以运行 100 次。这种聚合是我代码中的瓶颈。仅使用 data.table 或使用 rcpp 重写此函数是否可以更快?
logit.gr <- function(DT){
temp1 <- DT[, lapply(.SD, function(x) col1*sum(y*(x - sum(x*exp(col2))))), by = .(main_idx), .SDcols = c('col3','col4')]
return(-colSums(temp1[, c('col3','col4'), with = F]))
}
DT 在哪里
DT <- data.table(main_idx = c(rep('A',4), rep('B', 5)), col1 = runif(9), col2 = -2+runif(9), col3 = 1+runif(9), col4 = 1+runif(9), y = runif(9))
【问题讨论】:
-
请阅读有关how to ask a good question 的信息以及如何提供reproducible example。这将使其他人更容易帮助您。
-
谢谢。我刚刚做到了
-
应该是
col3*sum(y*(x - sum(x*exp(col4)))))而不是这个col1*sum(y*(x - sum(x*exp(col2))))) -
你在哪里使用
theta在你的逻辑? -
我在这个函数中调用了另一个函数。我删除了它,因为它不是瓶颈。忘记删除 theta。
标签: r data.table aggregate