Hinweis : Das genaue Problem, das ich in dieser Frage treffe, trifft nicht auf neuere Versionen der Datentabelle zu. Wenn Sie etwas tun möchten, wie es im Titel beschrieben ist, lesen Sie die entsprechende Frage in der FAQ des Pakets, 1.6 OK, aber ich kenne die Ausdrücke nicht voraus. Wie übermittle ich sie programmatisch? .
Ich habe eine Antwort gesehen, die veranschaulicht, wie ein Ausdruck erstellt wird, der in
ausgewertet werden soll %Vor%Ich verwende dies mit einer Zuweisung, '' ': =' (mycol = meine_Berechnung) '' und ich frage mich ...
Mit "dynamisch" meine ich "bestimmt, nachdem ich den Code für mein expr
geschrieben habe".
BEARBEITEN: Um das Problem besser zu veranschaulichen, hier ein anderes Beispiel. Suchen Sie im Bearbeitungsverlauf nach dem Original.
%Vor%Ich möchte die Setup- und Nutzungsschritte getrennt halten , damit mein Code leichter zu pflegen ist. Mein wirklicher Ausdruck ist unordentlicher als dieses Beispiel (wo es nur eine Spalte auswählt).
Erste Frage : Wie kann ich die zugewiesene Spalte "col_out" dynamisch machen? Ich meine: Ich möchte sowohl "cols_in_ *" als auch "col_out" im laufenden Betrieb angeben.
Ich habe versucht, verschiedene Ausdrücke in "expr" zu erstellen, aber as.quoted
gibt einen Fehler aus, wenn man bestimmte Dinge nicht links vom =
Symbol platziert.
Zweite Frage : Wie kann ich die Warnungen gegen die Verwendung von
get
vermeiden?
Die Warnungen schlagen vor, .SDcols
zu verwenden, damit [.data.table
weiß, welche Spalten ich verwende. Wenn ich jedoch das Argument .SDcols
verwende, gibt eine andere Warnung an, dass es keinen Sinn macht, das zu tun, es sei denn .SD
wird verwendet.
Die Lösungen, die ich bisher habe, sind ...
%Vor%Das bringt immer noch den kleinen Ärger mit sich, die Operation in zwei Schritten durchzuführen und "Vtmp" im Auge zu behalten, also ist die erste Frage noch teilweise offen.
Vielleicht verstehe ich das Problem nicht gut, aber reicht das aus:
%Vor% Um die bearbeitete Frage zu beantworten, verwenden Sie eval
als Umgebung:
.SD
funktioniert
%Vor%
Siehe auch diese Frage und das Update dort - eval und quote in data.table
Der einfachste Weg besteht darin, sie NACH der Auswertung des Ausdrucks einzustellen. Afterall, die Zeit, um das auszuführen, ist konstant und fast 0.
%Vor%Wie bei Frage zwei: Aktivieren Sie keine ausführlichen Warnungen und Sie erhalten keine ausführlichen Warnungen;)
%Vor% Wie bei Reduce
: Versuchen Sie, das als separate und vereinfachte Frage zu veröffentlichen, damit Sie leichter verfolgen können, was Sie tun (außerhalb der eval
issues)
Tags und Links r data.table