Ich habe eine Funktion mit viele Argumente. Ich brauche einen Fehler zu werfen, wenn ANY von ihnen fehlen:R überprüfen, ob fehlende Argumente
testFunction = function(a,b,c,d,e,f,g,....){
if(missing(a)) stop("a is required")
if(missing(b)) stop("b is required")
if(missing(c)) stop("c is required")
if(missing(d)) stop("d is required")
if(missing(e)) stop("e is required")
if(missing(f)) stop("f is required")
if(missing(g)) stop("g is required")
}
Aber mein eigentlichen Fall enthält viele mehr Argumente als das oben triviale Beispiel, und als solche:
Dies kann wie so getan werden, ich würde lieber eine gleichwertige Prüfung mit einer Schleife, in etwa so aus:
testFunction = function(a,b,c,d,e,f,g,...){
args = as.list(environment())
for(n in names(args)){
if(missing(as.name(n))) stop(sprintf("%s is required",n))
}
}
Die oben (was nicht funktioniert) wirft einen Fehler:
Error in missing(as.name(n)) : invalid use of 'missing'
Wie kann ich überprüfen, ob ein Argument in einer Zeichendarstellung des Argumentnamens fehlt?
Wird dies bewirkt, wenn Ellipse beteiligt ist? –
@ NicholasHamilton Nun, Sie könnten es testen und lassen Sie mich wissen, wenn Sie anderes Verhalten möchten. – MrFlick
habe ich gerade getan. Funktioniert perfekt. Vielen Dank. –