2014-10-26 34 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会让你创建矢量。

您可能需要寻找另一个测试或其他测试的实现。