2012-02-14 63 views
0

我有一大堆10,000個長度爲100的矢量存儲在一個矩陣中,我想要計算所有組之間的相關性。不幸的是,在我目前的計算機上做一個簡單的雙重循環來產生相關性是永遠的!有沒有更有效的方法可以解決這個問題?如何使用apply而不是for循環計算大數據集的所有成員之間的所有cor()?

我想我有一個像應用函數的想法,但我不知道如何實現它與cor()。

+0

萬將與每100個載體?或10,000個長度爲100的矢量?或者是一個10000個元素的列表,其中每個元素是一個長度爲100的向量。str(yourdata)是什麼樣子的? – 2012-02-14 20:45:42

+0

澄清:第二個:10,000個長度爲100的載體。 $ name1:num 15.3 14.9 15.1 15.1 15.3 ... $ name2:num 15.5 15.2 15.6 15.4 14.3 ... – user794479 2012-02-14 21:06:24

+0

註釋1:'cor'解決方案,on一個矩陣是正確的選擇,但是如果您計算的是10K x 10K的相關性,那就是100M條目, 800MB的浮點值。只要確定你沒有用完內存並交換(舊機器上的問題)。在我的筆記本電腦上,單線程10Kx10K相關矩陣的計算時間約爲23秒。 100x100矩陣是0.15秒。 – Iterator 2012-02-14 23:11:06

回答

5

將數據放入數據框或矩陣並使用內置的cor()函數。一般情況下,要避免使用循環中R.

cor(yourData)

+0

這就是我已經做過的事情,但我不確定是否有更好的方式來以某種方式在矩陣的不同部分上運行多個R實例。 – user794479 2012-02-14 21:07:41

+0

如果您使用多線程BLAS庫,那麼它應該在多個內核上運行。 – Iterator 2012-02-14 21:10:37

+0

這工作相當完美;我想調用每個成對比較10k向量的cor函數是一個非常糟糕的主意。我估計需要花費5個小時,花了我10秒。感謝David和Iterator的答覆和評論。 – user794479 2012-02-14 23:52:22

相關問題