Ich verwende die "Caret" -Bibliothek, um eine Kreuzvalidierung für einige Bäume durchzuführen. Die Bibliothek stellt eine Funktion mit der Bezeichnung train
zur Verfügung, die ein benanntes Argument "method" verwendet. Über seine Ellipse soll es andere Argumente zu einer anderen Funktion durchschlagen lassen, die es aufruft. Diese andere Funktion (rpart
) nimmt ein Argument mit dem gleichen Namen, "Methode".benannte Parameter mit dem gleichen Namen
Daher möchte ich zwei Argumente mit dem gleichen Namen übergeben ... und es ist eindeutig fehlgeschlagen. Ich habe versucht, die Dinge wie unten gezeigt, aber ich bekomme den Fehler:
"Fehler in train.default (x = myx, y = myy, Methode =" rpart2 ", preProcess = NULL,: formale Argument" Methode „matched durch mehrere tatsächliche Argumente“
jede Hilfe dankbar ist viel! dank!
train.wrapper = function(myx, myy, mytrControl, mytuneLenght, ...){
result = train(
x=myx,
y=myy,
method="rpart2",
preProcess=NULL,
...,
weights=NULL,
metric="Accuracy",
trControl=mytrControl,
tuneLength=mytuneLenght
)
return (result)
}
dtree.train.cv = train.wrapper(training.matrix[,2:1777],
training.matrix[,1],
2, method="class")
Was macht 'train' mit dem Argument 'method', außer dass es an rpart übergeben wird? –
train verwendet "sein" Methodenargument, um auszuwählen, welche Funktion intern aufgerufen werden soll ... so oben würde train intern die Funktion "rpart" aufrufen, die ein eigenes "method" Argument hat und an das ich versuche zu kommen über die Ellipse des Zuges fahren. – Diego