参照によって列を削除し、関連する内部コピーを回避する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)
df#drop(var_name)
もらえますか?代わりに、これらの複雑な回避策を実行する必要がありますか?