Come posso fare questo senza calcolare le funzioni somma e prod due volte?Utilizzo del risultato della funzione di nuovo in j espressione
require(data.table)
DT = data.table(x=rep(c("a","b","c"),each=4), y=1:6, V1 = 1000L, V2 = 2000, V3 = 1)
DT[x != "c",":="(
V1 = sum(y),
V2 = prod(y),
V3 = sum(y) + prod(y)
),by=x]
Naturalmente posso solo cadere il calcolo V3 e poi continuare così:
DT[x != "c",V3 := V1 + V2]
Ma non è molto pulito e inoltre i-espressione deve essere valutata nuovamente.
la mia sintassi desiderato è qualcosa di simile:
DT[x != "c",":="(
V1 = sum(y),
V2 = prod(y),
V3 = V1 + V2
),by=x]
Così dovrebbe contenere l'output desiderato I valori di 'NA' per' x == c', o dovrebbero essere eliminate queste righe? – nrussell
x == c non deve essere toccato. Ho chiarito la questione inserendo alcuni valori iniziali in questo punto – Pekka
Vedrò se posso aggiungere questo alle [vignette semantiche di Introduzione e di riferimento] (https://github.com/Rdatatable/data.table/issues/944). Viene abbastanza frequentemente. – Arun