如何从data.table中过滤行,其中任何列都是NA而不单独指定列

时间:2015-11-17 20:36:55

标签: r data.table

给出data.table

DT<-data.table(a=c(1,2,NA,4,5), b=c(2,3,4,NA,5),c=c(1,2,3,4,5),d=c(2,3,4,5,6))

我该如何做相同的

DT[!is.na(a) & !is.na(b) & !is.na(c) & !is.na(d)]

以一般形式,不知道任何列名称或为每个列键入!is.na()

我也可以

DT[apply(DT,1,function(x) !any(is.na(x)))]但我想知道是否还有更好的方法。

3 个答案:

答案 0 :(得分:8)

我认为您正在寻找> DT[complete.cases(DT),] a b c d 1: 1 2 1 2 2: 2 3 2 3 3: 5 5 5 6

<style>span{position:relative;top:-1px;left:-8px}</style>
+
<span>o</span>

答案 1 :(得分:1)

来自@docendodiscimus的评论

data.tablena.omit方法针对data.table进行了优化

答案 2 :(得分:-1)

你可以这样做:

DT[!is.na(rowSums(DT)),]