You can use rowSums to check if any element of a string is finite.
DT[is.finite(rowSums(DT))]
OR you can use the fact that Inf * 0 is NA and use complete.cases
DT[complete.cases(DT*0)]
Some tests show that rowSums is the fastest for smaller datasets, and complete.cases is the fastest solution for larger datasets.
require(microbenchmark) microbenchmark( DT[is.finite(rowSums(DT))] , DT[complete.cases(DT*0)] , DT[DT[, Reduce('&', lapply(.SD, is.finite))]] )
source share