我正在尝试从我的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
要删除x
为NA
的所有行,我尝试过:
DT[!J(NA_character_)]
...但它仍会返回整个data table
。有没有人知道我做错了什么?非常感谢你!
答案 0 :(得分:3)
在如图所示的示例中,我会这样做:
DT <- DT[!is.na(x) & !is.na(y)]
不按要求使用J()函数,但我认为无论如何我都会分享它。