[英]Wilcoxon test in R - x must be numeric error
我在R中的wilcox.test
有問題。我的數據對象是一個矩陣,其中第一列包含一個名稱,所有其他列包含一個(基因表達式)度量,它是數字:
str(myMatrix)
'data.frame': 2000 obs. of 143 variables:
$ precursor : chr "name1" "name2" "name3" "name4" ...
$ sample1: num 1.46e-03 2.64e+02 1.46e-03 1.46e-03 1.46e-03 ...
$ sample2: num 1.46e-03 1.91e+02 1.46e-03 1.46e-03 1.46e-03 ...
$ sample3: num 1.46e-03 3.01e+02 1.46e-03 1.46e-03 4.96 ...
對於所有2000行,我想測試矩陣的2個給定部分之間是否存在差異。 我嘗試了4種不同的方式:
wilcox.test(as.numeric(myMatrix[i,2:87],myMatrix[i,88:98]))$p.value
#[1] 1.549484e-16
wilcox.test(myMatrix[i,2:87],myMatrix[i,88:98])$p.value
#Error in wilcox.test.default(myMatrix[i, 2:87], myMatrix[i, 88:98]) :
#'x' must be numeric
t.test(as.numeric(myMatrix[i,2:87],myMatrix[i,88:98]))$p.value
#[1] 0.2973957
t.test(myMatrix[i,2:87],myMatrix[i,88:98])$p.value
#[1] 0.3098505
因此,正如您所看到的,只有在已經使用數字值時才使用as.numeric()
,我得到的結果沒有用於Wilcoxon測試的錯誤消息,但結果與t.test
結果完全不同,即使它們不應該。
使用在線工具手動驗證表明使用as.numeric()
值的t.test
結果是錯誤的。
關於如何解決這個問題並進行正確的Wilcoxon測試的任何建議? 如果您需要更多信息,請告訴我。
實際上,myMatrix [i,2:87]仍然是一個data.frame。 請參閱以下示例。
> myMat
fir X1 X2 X3 X4
1 name1 1 5 9 13
2 name2 2 6 10 14
3 name3 3 7 11 15
4 name4 4 8 12 16
> class(myMat[1, 2:4])
[1] "data.frame"
> as.numeric(myMat[1, 2:4])
[1] 1 5 9
將您的數據更改為真實Matrix將解決您的問題。
> myMat_01 <- myMat[, 2:5]
> rownames(myMat_01) <- myMat$fir
> myMat_01 <- as.matrix(myMat_01)
> class(myMat_01[1, 2:4])
[1] "integer"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.