2016-12-01 5 views
2

Gibt es eine Standardmethode zum Ablehnen von Argumenten in R?Wie verwerfen Sie ein Argument?

Beispiel: Für ein Web-API-Paket habe ich zuvor ein -Argument eingefügt, das über alle Ergebnisse paginieren und alles herunterladen würde.

Jetzt möchte ich ein limit Argument haben, und nur alles herunterladen, wenn auf limit=0 gesetzt. Dies beseitigt effektiv die Notwendigkeit für das paging Argument, also muss ich Leute jetzt lassen es tut im Grunde nichts jetzt. Wie mache ich das?

+1

Sie könnten dem Beispiel der lme4 Autoren folgen. Sie haben jetzt drei Parameter, die vielleicht eines Tages veraltet sind, weil sie einen Parameter umbenannt haben: http://search.r-project.org/R/library/lme4/html/predict.merMod.html – Roland

+2

Um klarer zu sein, setze 'limit = if (paging) 0 sonst theDefault' und in der Dokumentation sagen, dass der Parameter' paging' nicht verwendet werden soll. Sie können auch eine "Warnung" oder "Nachricht" geben, wenn Sie sich darüber stark fühlen. – Roland

Antwort

1

Etwas wie folgt könnte vielleicht für Sie tun?

foo <- function(paging = T, limit = 0) { 
    if (!missing("paging")) 
    warning("argument deprecated") 
} 

Beispiel Ausgänge:

# > foo() 
# > foo(limit = 0) 
# > foo(T) 
# Warning message: 
# In foo(T) : argument deprecated 
# > foo(paging = T) 
# Warning message: 
# In foo(paging = T) : argument deprecated 

Wie @Roland darlegt, sollte es auch für diese Funktion in der Dokumentation erwähnt werden, dass das Argument jetzt veraltet.

+1

Verwenden Sie 'print' nicht für Nachrichten. Es kann vom Benutzer nicht unterdrückt werden. – Roland

+0

in der Tat ein guter Punkt –

Verwandte Themen