This is a very good question regarding a design decision about := operator.
For simple calls using := as an operator, for example, col := val , we decided to automatically include val in the list. This decision was made to make it more convenient for users to assign a single column.
When you use the function call form, ":="(col = val) we no longer add val to the list. This is an extended form already. := behaves like an alias for list but is updated in-place. You can always check what the updated column will be by changing := in list (or . ) Like .(col = val) .
Not even when using := , you should still specify RHS as the operator, since the list creates columns 2+, c("col1","col2") := list(val1, val2) .
source share