Wie können wir mehrere Spalten unter Verwendung eines Vektors ihrer numerischen Indizes (Position) in auswählen data.table
?
So würden wir es machen mit data.frame
:
df <- data.frame(a = 1, b = 2, c = 3)
df[ , 2:3]
# b c
# 1 2 3
r
data.table
Jamborta
quelle
quelle
dt[,"a"]
unddt[,"a", with=FALSE]
sehen Sie, was für eine hilfreiche Option es wirklich ist.DT[,list(b:c)
, da ich es bequem fand, die Spalten direkt in der Datentabelle zu transformieren, zB kann ich dasDT[,list(1/b,2*c)]
, aber das funktioniert nicht mit.with=FALSE
in diesem Fall unnötig: github.com/Rdatatable/data.table/issues/…data.frame
kompatible Verwendungwith=FALSE
. Wie jedoch von ca. 3 Wochen, die Entwicklungsversion von data.table wurde , um Anrufe wie geändertdt[, 2]
,dt[, 2:3]
,dt[, "b"]
, unddt[, c("b", "c")]
verhalten sich genauso , wie sie in der mit tundata.frame
s ohne explizit festgelegt zu habenwith=FALSE
. Es ist großartig! Hier finden Sie das jeweilige Commit, einschließlich des NEWS-Eintrags, der die Änderung beschreibt.Es ist ein bisschen ausführlich, aber ich habe mich daran gewöhnt, die versteckte
.SD
Variable zu verwenden.Es ist ein bisschen mühsam, aber Sie verlieren nicht an anderen Funktionen von data.table (glaube ich nicht), sodass Sie weiterhin andere wichtige Funktionen wie Join-Tabellen usw. verwenden können sollten.
quelle
Wenn Sie Spalte verwenden möchten Namen die Spalten auszuwählen, verwenden Sie einfach
.()
, das ist ein Alias fürlist()
:quelle
Ab Version 1.10.2 können Sie auch verwenden
..
quelle
dt[, !..keep_cols]
unddt[, -..keep_cols]
funktioniert wie erwartet!@ Tom, vielen Dank, dass Sie auf diese Lösung hingewiesen haben. Es funktioniert großartig für mich.
Ich suchte nach einer Möglichkeit, nur eine Spalte vom Druck und vom obigen Beispiel auszuschließen. Um die zweite Spalte auszuschließen, können Sie so etwas tun
quelle