Meine Frage bezieht sich auf R data.table mit mehreren Schlüsseln. Nehmen Sie dieses Beispiel:Kombination von Join mit Nicht beitreten in data.table?
library(data.table)
example(data.table)
key(DT)
[1] "x" "y"
und nehme ich eine Variation wollen "x nicht gleich b und y 3 nicht gleich", wie hier:
DT[!J("b",3)]
x y v v2 m
1: a 1 42 NA 42
2: a 3 42 NA 42
3: a 6 42 NA 42
4: b 1 4 84 5
5: b 6 6 84 5
6: c 1 7 NA 8
7: c 3 8 NA 8
8: c 6 9 NA 8
Die Variation ich will, ist „x EQUAL b und y nicht gleich 3" , wie hier in:
DT[J("b",!3)]
Error in `[.data.table`(DT, J("b", !3)) :
typeof x.y (double) != typeof i.V2 (logical)
jede Chance zu sagen, J() einige Schlüssel zu negieren? Danke!
ich die Folge Syntax etwas transparenter finden: 'DT [x == 'b' & y! = 3] ' –
Hallo @GaryWeissman, deine Syntax impliziert einen Vektor-Scan. Der Punkt der data.table- und join-Operationen besteht darin, genau diese mithilfe von Schlüsseln zu vermeiden. Aber ich denke, Sie haben Recht, dass für Nicht-Data.Table-Benutzer, die leichter zu verstehen ist. –
Ich glaube nicht, dass die 'J'-Funktion nicht-konkordante logische Operatoren zwischen Argumenten unterstützt. Ich glaube, die obige Syntax ist in DT immer noch schneller als in DF. –