2016-08-17 26 views
1

data.tableの値を効率的に更新するためにset()を使用する列の順序が変更されたときに問題が発生しました。だから、私は回避策を使用して、列の代わりに列の名前を照合するようにしました。 設定クエリのj部分に列をアドレッシングするより良い方法があるかどうかを知りたいと思います。set()in data.table - 列番号の代わりに名前を照合

DT <- as.data.table(cbind(Period = 1:10, 
           Col.Name=NA)) 

set(DT, i = 1L , j = as.integer(match("Col.Name",names(DT))), value = 0) 
set(DT, i = 3L , j = 2L, value = 0) 

このため、データテーブルの回避策が用意されているかどうかを確認したいと思います

答えて

1

二つの方法の間の違いは、迅速なマイクロベンチマーク()で実際に顕著ではありませんが、私たちは、「J」に直接

set(DT, i = 1L , j = "Col.Name", value = 0) 
DT 
# Period Col.Name 
# 1:  1  0 
# 2:  2  NA 
# 3:  3  NA 
# 4:  4  NA 
# 5:  5  NA 
# 6:  6  NA 
# 7:  7  NA 
# 8:  8  NA 
# 9:  9  NA 
#10:  10  NA 
+1

をカラム名を使用することができます。たぶん内部的にはほぼ同じなので、もちろんコードの可読性が大幅に向上します。 – hannes101

関連する問題