See data.table::fifelse() for details.