Ich möchte eine optionale Variable zu einer Funktion liefern, lassen Sie die Funktionen überprüfen, ob dieses Argument geliefert wurde, und lassen Sie es die entsprechende Menge ausführen von Berechnungen. Ich dachte, ich könnte den Operator '...' dafür benutzen.R: Finden Sie Variablen, die Funktionen mit dem '...' Argument mit exists() übergeben werden
Das einfachste Beispiel, das ich mir vorstellen kann ist dies (die leider nicht):
monkeyfun = function(...){
if (exists("monkey")){
return('monkey found')
} else {
return('monkey not found')
}
}
Jetzt monkeyfun(monkey=0)
sowie monkeyfun()
beide Rück "monkey not found"
.
Als Plausibilitätsprüfung funktioniert die Definition monkey = 1
außerhalb der Funktion und gibt "monkey found"
zurück.
Die Dokumentation auf dem '...'
Argument hilft mir nicht wirklich, dieses Problem zu verstehen, und ich war nicht in der Lage, eine Formulierung dieser Frage zu finden, die übereinstimmende Ergebnisse liefert (ich verstehe, dass diese Frage grundlegend ist und wahrscheinlich irgendwo diskutiert wird) ...
Ich würde wirklich einige Hilfe mit diesem schätzen.
klar die beste Option – BrodieG
Ich spielte gerade mit 'hasArg()' gerade jetzt ... es zeigte das folgende unerwartete Verhalten obwohl ... nehmen Sie die folgende Funktion: 'tfun = Funktion (x = 0) {if (hasArg (name = 'x')) {print ('found')}} ' Wenn ich es ohne Angabe von' x' ausführe (was trotzdem den Standard auslösen sollte), sagt es mir nicht "gefunden" '. – Affaeng
@Affaeng: Warum ist das unerwartet? Wenn Sie 'tfun()' ohne Argumente aufrufen, dann gibt es kein Argument 'x' im Aufruf. Also 'hasArg (" x ")' gibt ganz richtig 'FALSE' zurück. Es ist irrelevant, dass 'x' ein formales Argument für' tfun' ist. Wie im Abschnitt * Siehe auch * zu '? HasArg' erwähnt, möchten Sie vielleicht '? Missing' lesen. –