2017-09-23 2 views
0

Ich versuche, Hartigans Diptest in R zu machen, bekomme jedoch den folgenden Fehler: 'x' muss numerisch sein.'x' muss numerisch sein R Fehler

Entschuldigung für solch eine grundlegende Frage, aber wie stelle ich sicher, dass die Daten, die ich lade, numerisch ist?

Wenn ich einen Satz von Werten bilden wie folgt (Code unten), arbeitet die diptest ohne Probleme:

library(diptest)                          
x = c(1,2,3,4,4,4,4,4,4,4,5,6,7,8,9,9,9,9,9,9,9,9,9)  
hist(x) 
dip.test(x)  

Aber zum Beispiel, wenn die gleichen Werte in einer Excel-Datei gespeichert werden/Tab begrenzt. txt-Datei (als eine Spalte von Werten gespeichert), und in R importiert, wenn ich den Diptest ausführen, muss der "x" ein numerischer Fehler auftreten. Gibt es eine Möglichkeit, zu überprüfen, welches Format die importierten Daten aus einer Excel/.txt-Datei in R haben, und sie anschließend in numerisch zu ändern? Danke noch einmal.

Jede Hilfe wird sehr geschätzt werden danke.

+1

'read.table' gibt ein' dat.frame' zurück. Einige oder alle Spalten können "numerisch" sein. Wenn "x" eine solche Spalte ist, würde "hist (Dat $ x)" das Histogramm darstellen. Aber in Ihrer Frage lesen Sie 'Dat' in und verwenden dann etwas anderes für' hist'. Macht nicht viel Sinn. Poste die Ausgabe von 'str (Dat)' oder von 'dput (head (Dat, 20))'. –

+0

Entschuldigung - Ich habe meine Frage bearbeitet (nicht genug Platz in Kommentaren), die es hoffentlich ein bisschen klarer gemacht hat. Ich werde es dir danken. – StatsCode

Antwort

2

Hier ist, was passiert. Wenn Sie den Code ausführen, den Sie kennen, funktioniert es, weil die Datenklasse numeric ist, wie es sein sollte. Wenn Sie es jedoch zurücklesen, ist es ein data.frame. Sie müssen also das numerische Element des data.frame Punkt:

library(diptest)                          
x = c(1,2,3,4,4,4,4,4,4,4,5,6,7,8,9,9,9,9,9,9,9,9,9) 

write.csv(x, "x.csv", row.names=F) 
x <- read.csv("x.csv") # comes back in as a data frame 

hist(x$x) 

dip.test(x$x) 
Hartigans' dip test for unimodality/multimodality 

data: x$x 
D = 0.15217, p-value = 2.216e-05 
alternative hypothesis: non-unimodal, i.e., at least bimodal 

Wenn Sie die Datei auf ein .rds statt CSV speichern sind, dann können Sie dieses Problem vermeiden.

Verwandte Themen