Warum funktioniert ".." zum Übergeben von Spaltennamen in einer Zeichenvektorvariablen?

8

Der folgende Code funktioniert, aber ich kann keine Dokumentation über den Operator ".." (Punktpunkt) in data.table help und vignette finden:

%Vor%

Die Ausgabe ist:

%Vor%

Warum funktioniert das, gibt es dafür Unterlagen?

PS: Normalerweise würde ich mget etc ... verwenden

Edit 1: Dies ist kein einfaches R-Feature der reservierten Namen ... , ..1 , ..2 usw., die verwendet werden, um auf Argumente zu verweisen, die von einem Aufrufer übergeben wurden Funktion (siehe ?Reserved ). Mein Beispiel verwendet keine Zahl, sondern Zeichen nach den zwei Punkten.

Edit 2: Dies ist kein Duplikat, wie das Beispiel von Rich Scriven zeigt:

%Vor%     
R Yoda 28.07.2017, 19:00
quelle

1 Antwort

7

Dies war eine neue experimentelle Funktion, die in data.table v1.10.2 hinzugefügt wurde. Es wird in der erläutert NEUE FUNKTIONEN Abschnitt der data.table Nachrichten für Änderungen in v1.10.2 .

Es liest (direkt zitiert):

  

Wenn j ein Symbol ist, dem .. vorangestellt ist, wird es im aufrufenden Bereich nachgeschlagen, und sein Wert wird als Spaltenname oder -zahl angenommen.

%Vor%      

Wenn Sie das Präfix .. sehen, denken Sie einstufig wie das Verzeichnis .. in allen Betriebssystemen, das heißt das übergeordnete Verzeichnis. In Zukunft könnte das .. Präfix dazu verwendet werden, an allen Symbolen innerhalb von DT[...] zu arbeiten. Es soll eine bequeme Möglichkeit sein, Ihren Code davor zu schützen, versehentlich einen Spaltennamen zu übernehmen. Ähnlich wie x. und i. Präfixe (analog zu SQL-Tabellen-Aliasen) können bereits verwendet werden, um den gleichen Spaltennamen zu disambiguieren, der sowohl in x als auch in i vorhanden ist. Ein Symbolpräfix anstelle einer ..() Funktion wird für uns einfacher intern zu optimieren sein, wenn Sie viele Variablen zum Aufrufen des Bereichs haben, die Sie sicher in Ihren Ausdrücken verwenden möchten. Dieses Feature wurde erstmals im Jahr 2012 vorgestellt und lange gewünscht, # 633 . Es ist experimentell.

Hinweis: Diese Antwort von Arun führte mich zu dieser Information.

    
Rich Scriven 28.07.2017, 22:04
quelle

Tags und Links