给出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)))]
但我想知道是否还有更好的方法。
答案 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.table
有na.omit
方法针对data.table
进行了优化
答案 2 :(得分:-1)
你可以这样做:
DT[!is.na(rowSums(DT)),]