Jak możemy wybrać wiele kolumn za pomocą wektora ich indeksów numerycznych (pozycji) w data.table
?
Oto jak zrobilibyśmy z data.frame
:
df <- data.frame(a = 1, b = 2, c = 3)
df[ , 2:3]
# b c
# 1 2 3
r
data.table
jamborta
źródło
źródło
dt[,"a"]
idt[,"a", with=FALSE]
zobacz, jaka to naprawdę pomocna opcja.DT[,list(b:c)
, ponieważ uznałem za wygodne przekształcanie kolumn bezpośrednio w tabeli danych, np. mogę to zrobićDT[,list(1/b,2*c)]
, ale to nie działa z.with=FALSE
w tym przypadku będzie niepotrzebna: github.com/Rdatatable/data.table/issues/ ...data.frame
kompatybilnego sposobu użyciawith=FALSE
. Jednak od około 3 tygodni temu, wersja rozwojowa data.table został zmodyfikowany do połączeń, takich jakdt[, 2]
,dt[, 2:3]
,dt[, "b"]
, idt[, c("b", "c")]
zachowują się tak samo jak robią to w zedata.frame
s bez konieczności jawnie ustawionewith=FALSE
. To straszne! Zobacz tutaj dla konkretnego zatwierdzenia, w tym wpis NEWS opisujący zmianę.To trochę rozwlekłe, ale przyzwyczaiłem się do używania ukrytej
.SD
zmiennej.To trochę kłopotliwe, ale nie tracisz innych funkcji data.table (nie sądzę), więc nadal powinieneś być w stanie korzystać z innych ważnych funkcji, takich jak łączenie tabel itp.
źródło
Jeśli chcesz użyć nazw kolumn do wybrania kolumn, po prostu użyj
.()
, co jest aliasem dlalist()
:źródło
Od wersji 1.10.2 możesz również używać
..
źródło
dt[, !..keep_cols]
idt[, -..keep_cols]
działa zgodnie z oczekiwaniami!@Tom, bardzo dziękuję za wskazanie tego rozwiązania. Działa świetnie dla mnie.
Szukałem sposobu, aby po prostu wykluczyć jedną kolumnę z drukowania iz powyższego przykładu. Aby wykluczyć drugą kolumnę, możesz zrobić coś takiego
źródło