参照によって列を削除し、関連する内部コピーを回避する場合は、パッケージと関数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)