Name der dynamischen / privaten Funktion in dcast.data.table

9

Ich habe eine Frage zu dem Umfang, in dem Funktionsnamen in data.table::dcast -Aufrufen ausgewertet werden ( data.table Version 1.9.6, R 3.2.2).

Ich möchte den Funktionsnamen machen, aber das schlägt fehl.

Hier ist, was ich versucht habe:

%Vor%

Das funktioniert gut:

%Vor%

Jetzt mache ich meine eigene Funktion, die auch funktioniert:

%Vor%

Hier mache ich das gleiche, aber ich erstelle eine private Funktion innerhalb einer Funktion. Dies schlägt jedoch mit Error in eval(expr, envir, enclos) : could not find function "f2" fehl.

Wenn ich f2 durch f1 ersetze funktioniert es und ruft f1 auf. Es sieht so aus, als würde man die globale Umgebung betrachten, um den Ausdruck fun = f2 auszuwerten, und f2 existiert nur im lokalen Bereich.

%Vor%

Gibt es einen Weg dahin? Was ich wirklich machen wollte, ist, den Funktionsnamen f2 dynamisch zu machen, so dass ich zum Beispiel "f3" übergebe und die private Funktion f3 aufruft.

Ich hätte so etwas wie

gehofft %Vor%

... würde mich dorthin bringen, aber das scheint nicht zu funktionieren. Irgendwelche Ideen?

    
user5577796 18.11.2015, 17:48
quelle

1 Antwort

3

Auf der Grundlage des Fehlerberichts konnte ich das Problem vorläufig umgehen, indem ich einen Parameter namens "fun.aggregate" verwendete.

Danke, dass du mich darauf hingewiesen hast.

Der folgende Code funktioniert und erreicht, was ich brauche. Ich kann einen bereits vorhandenen Funktionsnamen wie Mittelwert oder eine lokal definierte Funktion übergeben.

%Vor%     
user5577796 18.11.2015 18:49
quelle

Tags und Links