in R: Fehler ist.Daten.frame(data) : object " nicht gefunden, C5.0 Grundstück

Diese Frage ist ähnlich wie einige andere Fragen auf Stackoverflow (hier, hier und hier), aber unterschiedlich genug, so dass ich nicht extrapolieren diese Antworten zu meinem Fall.

Ich habe eine Funktion, in der ich einen C5.0-Modell und, als zu versuchen, plot-Modell.

train_d <- globald[train_ind,c(features,21)]
model <- C5.0(binclass ~ .,data=train_d,trials=10)

binclass ist eine Spalte name in meinem training/test data (globald ist ein dataframe von denen ich die Teilmenge von Zeilen mit _ind Indizes und Spalten c(3:12,21), wo Spalte 21 ist benannt binclass). Montage gut funktioniert. Allerdings, wenn ich auch fügen Sie die Zeile

plot(model,trial=0)

dann bekomme ich die folgende Fehlermeldung: Error in is.data.frame(data) : object 'train_d' not found.

Wie ist es möglich, dass bei der Montage das Modell, die train_d gefunden und richtig eingesetzt, aber beim Plotten, train_d ist nirgends zu finden? Und, irgendeine Idee, wie dieses Problem zu lösen. Namespaces in [r], bleibt mir ein Rätsel.

Einem minimal-Beispiel ist das folgende:

f <- function(){
    library(C50)
    set.seed(1)
    class = c(1,2)
    d <- data.frame(feature1 = sample(1:10,10,replace=TRUE), feature2 = 1:10, binclass = class)
    d$binclass <- as.factor(d$binclass)
    model <- C5.0(binclass ~ ., data=d)
    plot(model)   
}

Aufrufen f() Ergebnisse in die folgende Fehlermeldung: Error in is.data.frame(data) : object 'd' not found

Bearbeiten:
Wie pro die Antwort von MrFlick, es scheint, dass die Ursache des Problems ist ein Fehler in der C5.0-code. Es gibt einige workarounds sind gekennzeichnet durch Pascal und MrFlick.

Die "anderen Fragen"? Und ohne ein reproduzierbares Beispiel, es wird kompliziert sein, um eine Antwort zu bekommen.
Das klingt nicht wie ein namespace Problem, so viel als möglich den Umfang Problem. Aber es ist nicht sehr klar aus den Informationen, die Sie zur Verfügung gestellt. Sollten Sie auch ein reproduzierbare Beispiel machen Sie deutlich, was genau Sie tun.
ein minimal lauffähiges Beispiel zur Verfügung. Ich weiß nicht, ob es ist ein namespace ein scope Problem. Es ist ein Problem, das ich sehen wollen gelöst...
Nicht sicher, es ist das beste zu tun, aber es funktioniert, wenn Sie hinzufügen assign("d", d, .GlobalEnv) nach d$binclass <- as.factor(d$binclass).
Dies scheint eine ziemlich drakonische Maßnahme. Aber hey, es funktioniert!

InformationsquelleAutor user989762 | 2015-07-31

Schreibe einen Kommentar