使用以前计算的输出作为输入的函数进行映射

时间:2019-11-19 10:22:56

标签: r mapply

我不确定如何在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:])

1 个答案:

答案 0 :(得分:2)

$sql = "SELECT even.sid, even.datetime, count(*) as num_rows, count(distinct even.sid) as sessions, sum( even.targetbuttonname = 'konto' ) as num_konto, sum(devicetype ='Computer') as num_computer, sum(devicetype = 'Mobile') as num_mobile from events even INNER JOIN sessions ON even.sid = sessions.sid group by even.sid, even.datetime"; 不会这样做,它是广义的mapply。您需要的算法称为 scan prefix (or cumulative) sum。不幸的是,它没有内置在R中(the specific case of an actual sum and product中除外),我也不知道实现该操作的主流软件包。

无论哪种方式,您编写的循环可能都不是很完美,但是它的效率并不是问题,使用扫描算法并不会使其效率更高。