在R中使用data.table和lapply的慢循环

时间:2014-06-26 20:29:22

标签: r data.table lapply

我的函数fnEp_带有data.table列,data.tablelogical类型。我试图让函数迭代eltIndexEnriched$Max的每个元素(见下文)。它有效,但速度很慢。我想知道是否有更好的迭代方法或者设置方法可以让它更快。

我在EP_1使用data.table从名为fnEP_的函数创建列lapply

eltIndexEnriched <- eltIndexEnriched[, EP_1 := 
                  lapply(Max, fnEp_, dt = eltIndexEnriched, Indemn_Bool = TRUE)]

fnEp_ <- function(Att_, dt, Indemn_Bool) {
    if (Indemn_Bool == TRUE) { 
        retval <- (1 - exp(-1 * sum(dt$Rate * (ifelse(Att_ > dt$Max, 
                  0, 1 - pbeta(Att_ / dt$Max, dt$Alpha, dt$Beta)))))) 
    } else {
        retval <- dt[Mean > Att_, 1 - exp(-1 * sum(Rate))]
    }
    return(retval) 
}

0 个答案:

没有答案