Mi sono imbattuto nel popolare pacchetto data.table
e una cosa in particolare mi ha incuriosito. Ha una sul posto operatore di assegnamentoPerché: = consentito come operatore infisso?
:=
Questo non è definita in R. Base Infatti se non si carica il pacchetto data.table
, sarebbe sollevato un errore se si fosse trovato a usato (ad esempio , a := 2
) con il messaggio:
Error: could not find function
":="
Inoltre, perché fa :=
lavoro? Perché R consente di definire :=
come operatore infisso mentre ogni altra funzione infisso deve essere circondata da %%
, ad es.
`:=` <- function(a, b) {
paste(a,b)
}
"abc" := "def"
Chiaramente non è destinata ad essere una sintassi alternativa per %function.name%
per definire le funzioni infissa. data.table
sta sfruttando alcune stranezze di parsing di R? È un hack? Sarà "rattoppato" in futuro?
Si prega di dare un'occhiata alla documentazione data.table, a partire forse con le FAQ. –
@DirkEddelbuettel. Capisco come è usato in data.table. Ma il fatto che R consenta che un tale operatore sia definito e non causa un errore di sintassi è ciò che mi ha intrigato. È una domanda fondamentale su R e forse su come analizza il codice. – xiaodai
AFAIK è locale a data.table e funziona solo con il '[' subsettings. Quindi la tua domanda è off-base (non una stranezza R) ed è per questo che ti ho mandato ai documenti data.table * che discutono di questo *. –