Far*_*rel 20 select r data.table
如果我想选择data.table中使用二进制搜索在键变量中不包含特定值的所有行,会发生什么?顺便问一下,我想做什么的正确行话是什么?它是"nojoin"吗?这是"消极选择"吗?
DT = data.table(x=rep(c("a","b","c"),each=3), y=c(1,3,6), v=1:9)
setkey(DT,x)
Run Code Online (Sandbox Code Playgroud)
让我们对x =="a"但使用二进制搜索的所有行进行正选择
DT["a"]
Run Code Online (Sandbox Code Playgroud)
这很美,但我希望与此相反.我想要所有不是"a"的行,换句话说x!="a"
DT[x!="a"]
Run Code Online (Sandbox Code Playgroud)
那是矢量扫描.以上线路工作但使用矢量扫描.我想用二进制文件.我期待以下工作,但唉......
DT[!"a"]
DT[-"a"]
Run Code Online (Sandbox Code Playgroud)
以上两个不起作用,尝试与无匹配发挥让我无处可去.
And*_*rie 19
这个成语是这样的:
DT[-DT["a", which=TRUE]]
x y v
1: b 1 4
2: b 3 5
3: b 6 6
4: c 1 7
5: c 3 8
6: c 6 9
Run Code Online (Sandbox Code Playgroud)
灵感来自:
更新.v1.8.3中的新增内容是非连接语法.Farrel的第一个期望(!而不是-)已经实施:
DT[-DT["a",which=TRUE,nomatch=0],...] # old idiom
DT[!"a",...] # same result, now preferred.
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息和示例,请参阅新闻项目.