Ho un problema con lo wilcox.test
in R. L'oggetto dati personali è una matrice in cui la prima colonna contiene un nome e tutte le altre colonne contengono una misura (espressione genica) , che è numerica:Test Wilcoxon in R - x deve essere numerico errore
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 ...
per tutte le 2000 righe voglio verificare se v'è una differenza tra 2 parti date della matrice. Ho provato questo in 4 modi diversi:
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
Così come si può vedere, solo se uso as.numeric()
sui valori già numerici ottengo un risultato senza un messaggio di errore per il test di Wilcoxon, ma i risultati del tutto diversi da t.test
risultati anche se non dovrebbero.
Verificare manualmente utilizzando uno strumento online indica che i risultati t.test
utilizzando i valori as.numeric()
sono errati.
Qualche suggerimento su come posso risolvere questo problema e fare il test Wilcoxon corretto? Se hai bisogno di maggiori informazioni fammi sapere.
Io non so perché che stai ricevendo l'errore nel codice senza 'as.numeric', ma' as.numeric (myMatrix [i, 2: 87], myMatrix [I, 88: 98 ]) 'ignora il secondo argomento e restituisce lo stesso risultato di' as.numeric (myMatrix [i, 2: 87]) '. Sembra che tu voglia veramente 'as.numeric (myMatrix [i, 2: 87]), as.numeric (myMatrix [i, 88: 98])'. – eipi10
Si può eseguire questo: 'colnames (myMatrix) [che (unlist (lapply (1: dim (myMatrix) [2], function (x) class (myMatrix [[x]]))) =" numerico ") ] ' Per verificare che tutti i cols siano numerici. – Nightwriter
Grazie per il tuo aiuto! Quando si utilizza as.numeric() per entrambi gli argomenti, sembra funzionare! Esecuzione della linea Nightwriter restituisce tutti i nomi di colonna, anche se i valori all'interno sono mostrati numerici (vedere il mio primo esempio di codice sopra) – stefanie