在R中使用data.table和lappy进行慢循环

在R中使用data.table和lappy进行慢循环,r,data.table,lapply,R,Data.table,Lapply,我有一个函数fnEp,它接受一个data.table列、一个data.table和一个logical类型。我试图使函数在eltIndexEnriched$Max的每个元素上迭代(见下文)。它能工作,但速度很慢。我想知道是否有更好的方法来迭代,或者设置一个更快的设置 在这里,我使用lappy,从名为fnEP的函数在data.table中创建一列EP\u 1: eltIndexEnriched <- eltIndexEnriched[, EP_1 := l

我有一个函数
fnEp
,它接受一个
data.table
列、一个
data.table
和一个
logical
类型。我试图使函数在
eltIndexEnriched$Max
的每个元素上迭代(见下文)。它能工作,但速度很慢。我想知道是否有更好的方法来迭代,或者设置一个更快的设置

在这里,我使用
lappy
,从名为
fnEP
的函数在
data.table
中创建一列
EP\u 1

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) 
}

eltIndexEnriched您的示例是不可复制的,但它看起来可能是可矢量化的。我开始编辑,但您似乎没有阅读文档或浏览此标签中的许多问题。