我在使用R时非常新。我试图通过dcor
函数对矩阵的行对使用outer
(距离相关)。我的代码适用于小测试矩阵(100x100),但我尝试将它应用于真实的(5000 x 700),并且它花了一个多星期而没有给我一个结果。这是正常的吗?
有什么建议可以更快地获得结果吗?
代码是:
library(energy)
outer (1:n, 1:n, FUN=Vectorize (function (i,j) dcor (a[i,], a[j,])))
n
是矩阵的行数。
答案 0 :(得分:1)
看看数学:dcor(X, Y)
做
X
(仅A_kl
}和Y
B_kl
计算一些昂贵的东西(dcor
} 当您使用数据中的每个组合(对)行调用A_kn
时,会反复调用第一个昂贵的步骤:对于每一行,计算相同的2*n
总计n
次(或A_kl
次,如果你按照建议使用更智能的双循环。)虽然你真的需要它来计算一次。
结论:你将方式更好地编写自己的算法:
dcor
A_kl
函数最后一步的函数:将B_kl
和outer
作为输入并返回距离相关性,A_kn
或双循环调用该函数。请注意,每个{{1}}是一个尺寸为700 x 700的矩阵,您将有5000个,因此您可能需要选择一个在速度和内存使用之间取得平衡的次优算法。 / p>