Try package data.table and its :=
operator. It's very fast and very short.
DT[col1==something, col2:=col3+1]
The first part col1==something
is the subset. You can put anything here and use the column names as if they are variables; i.e., no need to use $
. Then the second part col2:=col3+1
assigns the RHS to the LHS within that subset, where the column names can be assigned to as if they are variables. :=
is assignment by reference. No copies of any object are taken, so is faster than <-
, =
, within
and transform
.
Also, soon to be implemented in v1.8.1, one end goal of j
's syntax allowing :=
in j
like that is combining it with by
, see question: when should I use the :=
operator in data.table.
UDPDATE : That was indeed released (:=
by group) in July 2012.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…