Jika Anda ingin menghapus kolom dengan referensi dan menghindari penyalinan internal yang terkait dengan data.framesmaka Anda dapat menggunakan data.tablepaket dan fungsinya:=
Anda dapat melewatkan nama-nama vektor karakter ke sisi kiri menu := operator, dan NULLsebagai 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]
Jika Anda ingin menentukan nama sebagai vektor karakter di luar panggilan [, bungkus nama objek di dalam ()atau {}untuk memaksa LHS dievaluasi dalam ruang lingkup panggilan bukan sebagai nama dalam ruang lingkupDT .
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.
Anda juga dapat menggunakan set, yang menghindari overhead [.data.table, dan juga berfungsi untukdata.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), dan sebagai gantinya, kita perlu melakukan pekerjaan rumit ini?