data.table
è un fantastico pacchetto R e lo sto utilizzando in una libreria che sto sviluppando. Finora tutto sta andando molto bene, tranne una complicazione. Sembra essere molto più difficile (rispetto ai frame dati convenzionali) fare riferimento alle colonne data.table
utilizzando nomi salvati in variabili (come per i frame di dati, ad esempio: colname="col"; df[df[,colname]<5,colname]=0
).Fare riferimento alle colonne data.table per nome salvato nelle variabili
Forse ciò che complica maggiormente le cose è l'apparente mancanza di coerenza della sintassi su questo in data.table
. In alcuni casi, eval(colname)
e get(colname)
o anche c(colname)
sembrano funzionare. In altri, DT[,colname, with=F]
è la soluzione. Tuttavia in altri, come ad esempio le funzioni set()
e subset()
, non ho trovato alcuna soluzione. Infine, un caso di uso estremo, anche se abbastanza comune, è stato discusso in precedenza (passing column names to data.table programmatically) e le soluzioni proposte, anche se apparentemente facendo il loro lavoro, non sembravano particolarmente leggibili ...
Forse sto complicando troppo le cose? Se qualcuno potesse buttare giù un rapido cheatsheet per fare riferimento ai nomi delle colonne data.table
usando le variabili per diversi scenari comuni, sarei molto grato.
UPDATE:
Alcuni esempi specifici che lavoro messe a disposizione posso nomi delle colonne codificare:
x.short = subset(x, abs(dist)<=100)
set(x, which(x$val<10), "val", 0)
Ora assumere distcol="dist"
, valcol="val"
. Qual è il modo migliore per fare quanto sopra utilizzando distcol
e valcol
, ma non dist
e val
?
Questa domanda sembra troppo incerta. Potrebbe essere migliorato se offri casi di test specifici. –
OK, trasferirà gli esempi dalla discussione in basso alla domanda stessa. – msp