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

use*_*624 7 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
Run Code Online (Sandbox Code Playgroud)

要删除所有行xNA我尝试:

DT[!J(NA_character_)]
Run Code Online (Sandbox Code Playgroud)

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

Jac*_*cob 3

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

DT <- DT[!is.na(x) & !is.na(y)]
Run Code Online (Sandbox Code Playgroud)

没有按要求使用 J() 函数,但我想无论如何都会分享这个。