基于二进制搜索的data.table中NA值的子集

时间:2014-01-28 00:50:55

标签: r data.table

我正在尝试从我的data.table中删除行,其中两列中的任何一列都包含NA值。我想使用J包中的data.table函数来利用二进制搜索。这是我试过的:

DT = data.table(x=rep(c("a","b",NA),each=10), y=c(1,3,6))
setkey(DT,x)
DT
     x y
 1: NA 6
 2: NA 1
 3: NA 3
 4: NA 6
 5: NA 1
 6: NA 3
 7: NA 6
 8: NA 1
 9: NA 3
10: NA 6
11:  a 1
12:  a 3
13:  a 6
14:  a 1
15:  a 3
16:  a 6
17:  a 1
18:  a 3
19:  a 6
20:  a 1
21:  b 3
22:  b 6
23:  b 1
24:  b 3
25:  b 6
26:  b 1
27:  b 3
28:  b 6
29:  b 1
30:  b 3
     x y

要删除xNA的所有行,我尝试过:

DT[!J(NA_character_)]

...但它仍会返回整个data table。有没有人知道我做错了什么?非常感谢你!

1 个答案:

答案 0 :(得分:3)

在如图所示的示例中,我会这样做:

DT <- DT[!is.na(x) & !is.na(y)]

不按要求使用J()函数,但我认为无论如何我都会分享它。