2014-10-26 33 views
2

我知道Google有很多關於這個問題的信息,但我無法解決它。 我有一個數據幀:cramer.test:強制引入NAs

> str(myData) 
'data.frame': 1199456 obs. of 7 variables: 
$ A: num 3064 82307 4431998 1354 193871 ... 
$ B: num 6067 403916 2709997 2743 203434 ... 
$ C: num 299 11752 33282 170 2748 ... 
$ D: num 105 6676 7065 20 1593 ... 
$ E: num 8 572 236 3 170 ... 
$ F: num 0 21 95 0 13 ... 
$ G: num 583 18512 961328 348 42728 ... 

然後我把它轉換成一個矩陣,以便從「克萊默」庫應用克拉美·馮·米塞斯測試:

> myData = as.matrix(myData) 
> str(myData) 
num [1:1199456, 1:7] 3064 82307 4431998 1354 193871 ... 
- attr(*, "dimnames")=List of 2 
    ..$ : chr [1:1199456] "8" "32" "48" "49" ... 
    ..$ : chr [1:7] "A" "B" "C" "D" ... 

之後,如果我申請一個 「cramer.test(myData的[X1:Y1,],myData的[X2:Y2,])」 我得到以下錯誤:

Error in rep(0, (RVAL$m + RVAL$n)^2) : invalid 'times' argument 
In addition: Warning message: 
In matrix(rep(0, (RVAL$m + RVAL$n)^2), ncol = (RVAL$m + RVAL$n)) : 
NAs introduced by coercion 

我還試圖將數據幀轉換成矩陣像這樣,但錯誤是一樣的:

> myData = as.matrix(sapply(myData, as.numeric)) 
> str(myData) 
num [1:1199456, 1:7] 3064 82307 4431998 1354 193871 ... 
- attr(*, "dimnames")=List of 2 
    ..$ : NULL 
    ..$ : chr [1:7] "A" "B" "C" "D" ... 
+0

什麼是x1,y1,x2,y2? – 2014-10-26 23:49:04

+0

他們是數字 – ibci 2014-10-27 07:30:44

回答

3

你的問題是,你的數據集是爲cramer.test使用(至少它的編碼方式)算法太大。代碼試圖根據

lookup <- matrix(rep(0, (RVAL$m + RVAL$n)^2), 
    ncol = (RVAL$m + RVAL$n)) 

其中RVAL$mRVAL$n是兩個樣品的行數來創建查找表。在32位平臺上,標準maximum length of an R vector是2^31-1:由於你的樣本有相同數量的行N,因此你將嘗試創建一個長度爲(2*N^2)的向量,在你的情況下它是5.754779e + 12 - 可能太大,即使R會讓你創建矢量。

您可能需要尋找另一個測試或其他測試的實現。