如何在R中加速双循环

时间:2017-03-09 10:28:24

标签: r loops

我有以下R代码。函数Heaviside2是Heaviside阶跃函数,而矩阵A是数据矩阵。

for (i in 1:N){
   for (j in 1:N){
      if (j!=i) {
          arg=r-normvec(A[i,]-A[j,])
          s=s+Heaviside2(arg)
      }
   }
}

我尝试加速这段代码,删除双倍,但内部“如果”使其更难。

提前致谢

1 个答案:

答案 0 :(得分:2)

在您的情况下,dist功能非常有用。所以我认为解决方案是

sum(Heaviside(r - dist(A)))

我不知道您使用的是哪种Heaviside功能,但我使用的是fBasics包中的功能。