2016-05-04 2 views
2

Ich versuche, eine Funktion zu machen, die nur wenige Eingaben erhält. Ich würde gerne wissen, wie ich die Verfügbarkeit meiner Argumente überprüfen kann. Hier ist meine Funktion:Überprüfen Sie, ob jedes Argument als Eingabe in einer Funktion existiert

MyFunction<-function(data,window,dim,option) { 

} 

Zuerst möchte ich sehen, ob es ein Argument ist, wenn kein Drucken ein Fehler ist es richtig

if ~nargin 
    error('no input data') 
    } 

Dann zu benutzen, ich möchte sicherstellen, dass das zweite Argument auch
eingeführt wird ist es richtig, wie diese

if nargin < 2 
    error('no window size specified') 
    } 

Dann zu fragen, möchte ich, wenn das dritte Argument prüfen ist leer, legen Sie es als 1

if nargin < 3 || isempty(dim) 
    dim<-1 
    } 
+2

Scheck tun out '? Missing' (und für das dritte Argument, setzte' einen Standardwert von = 1 'in der Funktionsdefinition dim) –

Antwort

3

Sie hasArg()

testfunction <- function(x,y){ 
    if(!hasArg(x)){ 
    stop("missing x") 
    } 
    if(!hasArg(y)){ 
    y = 3 
    } 
    return(x+y) 
} 

>testfunction(y=2) 
Error in testfunction(y = 2) : missing x 

> testfunction(x=1,y=2) 
[1] 3 

> testfunction(x=1) 
[1] 4 
+0

können Sie Ihre Antwort erweitern zu ein paar mehr Sachen, habe ich mehr Dinge oben hinzugefügt, wäre toll, wenn Sie diese in Ihrer Antwort hinzufügen könnten. – nik

+0

Sie sollten in der Lage sein, die Beispiele, die ich bereits habe, zu verwenden, was Sie brauchen, 'hasArg' ist einfach ein Wahr/Falsch, wenn dieses Argument existiert. Welche Logik Sie auch immer einrichten möchten, kann dann mit den logischen Operationen '&' und '|' versehen werden. Wenn Sie Schwierigkeiten haben, dies zu implementieren, könnten Sie einen aktualisierten Versuch zeigen. – zacdav

1

Als @ Ben Bolker sagte verwenden kann, verwendet wird, fehlt, ob ein Wert zu testen, um eine Funktion als Argument angegeben wurde. Sie können in Ihren R-Funktionen unterschiedliche Bedingungen haben, wie z. B. Warnung oder Stopp. In Ihrem Fall würde ich den folgenden

MyFunction<-function(data,window,dim,option) { 
if (missing(data)) 
     stop("the first argument called data is missing") 
if (missing(window)) 
     stop("the second argument called window is missing") 
if (missing(dim)) 
     dim <- 1 
if (missing(option)) 
     stop("the second argument called option is missing") 
} 
Verwandte Themen