我知道Google上有很多关于此问题的信息,但我无法解决。 我有一个数据框:
> 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 ...
然后我将它转换为矩阵,以便应用Cramer-von Mises测试来自" cramer"库:
> 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 :(得分:3)
您的问题是您的数据集对于cramer.test
正在使用的算法来说太大了(至少它的编码方式)。代码尝试根据
lookup <- matrix(rep(0, (RVAL$m + RVAL$n)^2),
ncol = (RVAL$m + RVAL$n))
其中RVAL$m
和RVAL$n
是两个样本的行数。标准maximum length of an R vector在32位平台上是2 ^ 31-1:由于您的样本具有相等的行数N,您将尝试创建长度为(2*N^2)
的向量,这在您的case是5.754779e + 12 - 即使R允许你创建向量,也可能太大了。
您可能需要寻找另一个测试实现或其他测试。