หากคุณต้องการลบคอลัมน์โดยอ้างอิงและหลีกเลี่ยงการคัดลอกภายในที่เกี่ยวข้องกับ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]
หากคุณต้องการ predefine เป็นชื่อเป็นตัวอักษรแบบเวกเตอร์นอกเรียกไป[ห่อชื่อของวัตถุใน()หรือ{}จะบังคับให้ 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)และเราจำเป็นต้องทำงานที่ซับซ้อนเหล่านี้แทน