Nếu bạn muốn xóa các cột theo tham chiếu và tránh sao chép nội bộ được liên kết với data.frames
thì bạn có thể sử dụng data.table
gói và hàm:=
Bạn có thể chuyển tên vectơ ký tự sang phía bên trái của :=
toán tử và NULL
dưới dạng 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]
Nếu bạn muốn xác định trước các tên dưới dạng vectơ ký tự bên ngoài lệnh gọi [
, hãy bọc tên của đối tượng ()
hoặc {}
buộc LHS được đánh giá trong phạm vi gọi không phải là tên trong phạm vi 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.
Bạn cũng có thể sử dụng set
, để tránh chi phí hoạt động[.data.table
, và cũng hoạt động cho 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)
, và thay vào đó, chúng ta cần thực hiện những công việc phức tạp này?