2015-08-26 7 views
5

Ich verwende das randomForest Paket ein binäres Ergebnisvariable mit dem Standardverfahren zu klassifizieren. Ich hatte zuerst auf alle Variablen eine Änderung zu zwingen, um sicherzustellen, dass sie numerisch und verwendet dann na.roughfix fehlende Werte zu handhaben:Fehlende Wertfehler in dem Paket von Random R

data <- read.csv("data.csv") 
data <- lapply(data, as.numeric) 
data <- na.roughfix(data) 

Dann laufen i das Modell:

model <- randomForest(as.factor(outcome) ~ V1 + V2...+ VN, 
     data=data, 
     importance=TRUE, 
     ntree=500) 

und ich erhalte die folgende Fehler:

Error in na.fail.default(list(as.factor(outcome) = c(2L, 2L, 1L, : missing values in object

Die na.roughfix Anrechnungs betreut diese haben sollte (ich habe es vor und research on here shows that it should work zu arbeiten bekommen), nicht wahr? Irgendwelche Vorschläge?

Antwort

5

Ihre lapply Linie tun nicht, was Sie erwartet, dass es zu. Das Ergebnis ist nicht mehr ein Datenrahmen, nur eine Liste. Als Ergebnis wird die data.frame Methode von na.roughfix nicht ausgelöst, nur die Standardmethode, die nur das erste Argument zurückgibt, wenn es nicht atomar ist (was Ihre Liste eindeutig nicht ist).

Die etwas hinterhältige Art und Weise jede Spalte numerisch zu konvertieren, aber der Datenrahmen Eigenschaft wäre zu behalten:

data[] <- lapply(data,as.numeric) 

Alternativ können Sie einfach konvertieren es zurück über as.data.frame.

+0

Dank für die Antwort. Ich hatte vorher die 'as.data.frame' Lösung versucht. Ich erneut versuchte es und gab 'Daten [] <- lapply (Daten, as.numeric)' einen Lauf zu, und beide noch den gleichen Fehler spucken. – bencrosier

+0

@bencrosier Na, dann, wenn Sie mehr spezifische Hilfe möchten, müssen Sie ein reproduzierbares Beispiel liefern müssen. – joran