Tôi muốn xóa tất cả các hàng của data.table
có chứa Inf
trong bất kỳ cột nào của nó. Cho đến nay, tôi đã sử dụng phương pháp này:Xóa các hàng có NA khỏi data.table trong R
DT <- data.table(col1 = c(1,2,3), col2 = c(4,Inf,5))
DT[,drop := apply(.SD, 1, function(x) any(is.infinite(x))), by = 1:nrow(DT)]
DT <- DT[(!drop)][,drop:=NULL]
có nguồn gốc từ this Stackoverflow question. Tuy nhiên, cách tiếp cận này không thể mở rộng tốt với lượng lớn dữ liệu. Có cách nào tốt hơn để xóa các hàng có Inf
không?
Có thể 'DT [DT [, Giảm ('&', lapply (.SD, is.finite))]] ' – akrun
Điều thú vị (?), Ví dụ được đưa ra bởi OP không làm việc với phiên bản 1.9.5, khi giải pháp @akrun hoạt động. –
Tại sao không sử dụng 'rowSums':' DT [is.finite (rowSums (DT))] ' – shadow