I can reproduce the error with latest data.table just pulled from master:
R version 3.4.2 (2017-09-28) -- "Short Summer"
Copyright (C) 2017 The R Foundation for Statistical Computing
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Loading required package: data.table
data.table 1.11.1 IN DEVELOPMENT built 2018-05-03 18:45:22 UTC; pasha
The fastest way to learn (by data.table authors): https://www.datacamp.com/courses/data-analysis-the-data-table-way
Documentation: ?data.table, example(data.table) and browseVignettes("data.table")
Release notes, videos and slides: http://r-datatable.com
> DT <- data.table(COL_INT=1L, COL_INT_2=5L)
> DT[COL_INT == 0L, c("COL_INT", "NEW_COL"):=list(COL_INT_2, "Test")]
Error in `[.data.table`(DT, COL_INT == 0L, `:=`(c("COL_INT", "NEW_COL"), :
RHS of assignment to existing column 'COL_INT' is zero length but not NULL. If you intend to delete the column use NULL. Otherwise, the RHS must have length > 0; e.g., NA_integer_. If you are trying to change the column type to be an empty list column then, as with all column type changes, provide a full length RHS vector such as vector('list',nrow(DT)); i.e., 'plonk' in the new column.
I presume the operation should have been a noop, given that i matched no rows (and if i did match some rows, j would have been a valid update statement too).