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