我有以下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)
}
}
}
我尝试加速这段代码,删除双倍,但内部“如果”使其更难。
提前致谢
答案 0 :(得分:2)
在您的情况下,dist
功能非常有用。所以我认为解决方案是
sum(Heaviside(r - dist(A)))
我不知道您使用的是哪种Heaviside功能,但我使用的是fBasics
包中的功能。