Теперь это тривиально в tidyr с replace_na (). Функция, как представляется, работает для data.tables, а также data.frames:
tidyr::replace_na(x, list(a=0, b=0))