1
我有以下R代碼。函數Heaviside2是Heaviside階躍函數,而矩陣A是數據矩陣。我該如何加速R中的雙循環?
for (i in 1:N){
for (j in 1:N){
if (j!=i) {
arg=r-normvec(A[i,]-A[j,])
s=s+Heaviside2(arg)
}
}
}
我試圖加快這段代碼,刪除double,但內部的「if」使它更加困難。
在此先感謝
您可以使用'dput'函數提供您的數據樣本嗎? – ira
你可以重構雙循環爲'for(i in 1:N-1)'和'for(j in i:N)',但是你仍然需要將'normvec()'兩次消失。也許如果你只需要計算一次,那麼這個選項會使你的速度提高2倍。 –
你確定for循環在速度上扮演什麼角色嗎?我認爲它會被N^2'normvec'調用所控制。 –