Ich denke, es ist ein Fehler in der einzigartigen-Funktion des data.table (1.9.6) Paket:unerwartetes Verhalten mit beiden: einzigartig und == Funktion
Kleines Beispiel:
test <- data.table(a = c("1", "1", "2", "2", "3", "4", "4", "4"),
b = letters[1:8],
d = c(TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE))
a b d
1: 1 a TRUE
2: 1 b TRUE
3: 2 c FALSE
4: 2 d FALSE
5: 3 e TRUE
6: 4 f FALSE
7: 4 g FALSE
8: 4 h FALSE
test[d == TRUE, `:=` (b = "M")]
test <- unique(test, by = c("a", "b"))
a b d
1: 1 M TRUE
2: 2 c FALSE
3: 2 d FALSE
4: 3 M TRUE
5: 4 f FALSE
6: 4 g FALSE
7: 4 h FALSE
an diesem Punkt ist alles perfekt, aber jetzt will ich nur die Zeilen auszuwählen, in Spalte d wahr ist:
test[d == TRUE]
a b d
1: 1 M TRUE
aber das Ergebnis ist falsch.
FWIW, 'test [(d == TRUE)]', 'test [d == 1]' und 'test [(d)]' geben alle richtigen Ergebnisse. – nicola
Seltsam ... das funktioniert stattdessen: 'test [test $ d == TRUE]' – digEmAll
Das sieht tatsächlich wie ein Fehler aus, der wahrscheinlich durch den Sekundärindex verursacht wurde. Vielleicht in Verbindung mit [diesem] (https://github.com/Rdatatable/data.table/issues/1704). Egal, SO ist nicht für Fehlerberichte gedacht. Bugs sollten über GH berichtet werden. Auch die Verwendung von '==' auf einem logischen Vektor macht keinen Sinn für mich. Warum nicht einfach "([d)]" testen? –