In meiner nicht enden wollende Suche zu überprüfen, Dinge zu brechen, betrachten:wie Formalen modifizierte Funktion
gbar<-function(x,y,x,a) x+2*y-4*a
Error: repeated formal argument 'x' on line 1
R
ordnungsgemäß überprüfen meine definierte Funktion für illegal Formalen.
Aber wenn ich manuell Foul Dinge:
ffoo<-function(x,y,a) x+2*y-4*a
formals(ffoo)<-c(x=7, formals(ffoo))
Dann werde ich nur unter bestimmten Umständen herausfinden, dass etwas ungültig ist. ffoo(3,4,5,6)
wird ordnungsgemäß ausgeführt (obwohl wahrscheinlich nicht die Antwort, die ich erwartet habe), wie auch ffoo(y=3,a=2)
; während ffoo(x=5,y=3,a=2)
wird einen Fehler über mehrdeutige Argumentnamen zu werfen.
Also: gibt es irgendwelche base-R
oder erweiterte Dienstprogramm-Paket mit einer Funktion zu tun 'Vernunft' Prüfung auf die formals
einer bestehenden Funktion?
ich keine R-Funktion finden können, aber Sie können die C lesen Code bei [src/main/gram.y] (https://github.com/wch/r-source/blob/cf829c12299b8571cd67e9d8aae88ac31450c73c/src/main/gram.y). Suche nach der Funktion 'CheckFormalArgs()' – Andrie
@RichardScriven Nein, ich habe deine Antwort akzeptiert. Meine letzte Lösung bestand darin, die tatsächlichen Namen in 'formals' zu überprüfen und aus den Matches eine' do.call' zu erstellen. Ich poste das als eine "Antwort-Erweiterung" –