Ich habe ein Problem mit der wilcox.test
in R. Mein Datenobjekt ist eine Matrix, in der die erste Spalte einen Namen enthält und alle anderen Spalten eine (Genexpression) Messung enthalten , die numerisch ist:Wilcoxon Test in R - x muss numerischer Fehler sein
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 ...
Für alle der 2000 Zeilen ich testen wollen, ob es einen Unterschied zwischen zwei bestimmten Teilen der Matrix ist. Ich habe versucht, dies in 4 verschiedenen Möglichkeiten:
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
So wie Sie nur sehen, wenn ich as.numeric()
auf den bereits numerischen Werten verwende ich ein Ergebnis ohne eine Fehlermeldung für den Wilcoxon-Test erhalten, aber die Ergebnisse völlig unterscheiden sie von t.test
Ergebnisse auch wenn sie nicht sollten.
Manuelle Überprüfung mit einem Online-Tool zeigt, dass die t.test
Ergebnisse mit as.numeric()
Werte falsch sind.
Haben Sie Vorschläge, wie ich dieses Problem lösen und den richtigen Wilcoxon-Test durchführen kann? Wenn Sie weitere Informationen benötigen, lassen Sie es mich wissen.
Ich bin mir nicht sicher, warum Sie den Fehler im Code sind immer ohne 'as.numeric', aber' as.numeric (myMatrix [i, 2: 87], myMatrix [i, 88: 98 ]) 'ignoriert das zweite Argument und gibt das gleiche Ergebnis zurück wie' as.numeric (myMatrix [i, 2: 87]) '. Es sieht so aus, als ob Sie tatsächlich 'as.numeric (myMatrix [i, 2: 87]), as.numeric (myMatrix [i, 88: 98])' wollen. – eipi10
Können Sie dies ausführen: 'Colnames (myMatrix) [die (unlist (lapply (1: dim (myMatrix) [2], Funktion (x) Klasse (myMatrix [[x]])))! =" Numerisch ") ] ' Um zu überprüfen, dass alle Spalten numerisch sind. – Nightwriter
Danke für Ihre Hilfe! Wenn Sie as.numeric() für beide Argumente verwenden, scheint es zu funktionieren! Running your line Nightwriter gibt alle Spaltennamen zurück, auch wenn die darin enthaltenen Werte numerisch sind (siehe mein erstes Codebeispiel oben) – stefanie