我不知道如何在R:中有效地做到这一点
B <- matrix(0,p,L+1)
for(jj in 1:L){
B[,jj+1] <- enet(y, X, B[,jj], lamgrid[jj+1], alpha, printitn) # enet returns a p-dim vector
}
我尝试使用mapply,但我不知道如何将最近计算的B[,jj]作为参数传递。
B[,2:] <- mapply(function(b,l)<- enet(y, X, b, l, alpha, printitn), ???, lamgrid[2:])
mapply
不做这件事,它是一个广义的map
。您需要的算法被称为扫描或前缀(或累积(和。不幸的是,它没有内置在R中(除了在实际和和乘积的特定情况下(,而且我也不知道有主流的包实现该操作。
不管怎样,你写的循环可能不是很优雅,但它的效率不是问题,使用扫描算法也不会提高它的效率。