Якщо ви хочете видалити стовпці за посиланням та уникнути внутрішнього копіювання, пов’язаного з data.frames
цим, ви можете використовувати data.table
пакет та функцію:=
Ви можете передати імена векторних символів ліворуч від :=
оператора та NULL
як RHS.
library(data.table)
df <- data.frame(a=1:10, b=1:10, c=1:10, d=1:10)
DT <- data.table(df)
# or more simply DT <- data.table(a=1:10, b=1:10, c=1:10, d=1:10) #
DT[, c('a','b') := NULL]
Якщо ви хочете заздалегідь визначити імена як вектор символу поза викликом [
, введіть ім'я об'єкта в ()
або {}
змусити LHS оцінюватися в області виклику, а не як ім'я в межах DT
.
del <- c('a','b')
DT <- data.table(a=1:10, b=1:10, c=1:10, d=1:10)
DT[, (del) := NULL]
DT <- <- data.table(a=1:10, b=1:10, c=1:10, d=1:10)
DT[, {del} := NULL]
# force or `c` would also work.
Ви також можете використовувати set
, що дозволяє уникнути накладних витрат [.data.table
, а також працює data.frames
!
df <- data.frame(a=1:10, b=1:10, c=1:10, d=1:10)
DT <- data.table(df)
# drop `a` from df (no copying involved)
set(df, j = 'a', value = NULL)
# drop `b` from DT (no copying involved)
set(DT, j = 'b', value = NULL)
df#drop(var_name)
, натомість, і замість цього нам потрібно виконати ці складні роботи?