1

我想就什么是加速代码的最佳方法发表意见,该方法R使用 C++ 用户定义函数(func1、func2、func3、func4),来源于RusingRcpp包。我正在展示一个无法重现的示例,只是因为我使用的真正功能太长而无法在此处使用。通过使用以下代码,大约需要 10 分钟才能获得结果。

在这段代码中,我有一个函数 ( integrand_func),它将使用R 包中的cubintegrate函数进行 4D 数值积分。cubature

integrand_func<-function(x_list, x0){

  a = x_list[1]
  b = x_list[2]
  c = x_list[3]
  d = x_list[4]

  pA = func1(a, x0)
  pB = func2(b)
  pC = func3(c)
  pD = func4(d)

 return(Constant * pA * pB * pC *pD)

}

然后我执行integrand_func使用cubintegrate函数的 4D 数值积分。然后在 for 循环中针对 的各种值重复此数值积分x

res<-rep(NA,length(x))

for(i in 1:length(x)){
res[i] = cubintegrate(integrand_func,lower=rep(-400,4), upper = rep(400,4),x0=x[i], method='cuhre')$integral
}

例如,我的一个想法是使用foreachR 包并行化 for 循环。

4

0 回答 0