gpt4 book ai didi

r - 如何在 data.table 中进行否定/不匹配/反向搜索?

转载 作者:行者123 更新时间:2023-12-02 10:11:36 24 4
gpt4 key购买 nike

如果我想使用二分搜索选择 data.table 中键变量中不包含特定值的所有行,会发生什么情况?顺便问一下,我想做的事情的正确行话是什么?是“不加入”吗?是“负选择”吗?

DT = data.table(x=rep(c("a","b","c"),each=3), y=c(1,3,6), v=1:9)
setkey(DT,x)

让我们对 x=="a"的所有行进行正向选择,但使用二分搜索

DT["a"]

这很漂亮,但我想要相反的。我想要所有不是“a”的行,换句话说,其中 x!="a"

DT[x!="a"]

这是矢量扫描。上面的代码行有效,但使用的是矢量扫描。我想使用二进制。我期待以下内容能够发挥作用,但是唉......

DT[!"a"]
DT[-"a"]

以上两个不起作用,尝试使用 nomatch 却一事无成。

最佳答案

成语是这样的:

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
<小时/>

灵感来自:

<小时/>

更新。 v1.8.3 中的新功能是 not-join 语法。 Farrel 的第一个期望(! 而不是 -)已经实现:

DT[-DT["a",which=TRUE,nomatch=0],...]   # old idiom
DT[!"a",...] # same result, now preferred.

请参阅NEWS项目以获取更多详细信息和示例。

关于r - 如何在 data.table 中进行否定/不匹配/反向搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12319083/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com