新しい列を既存の空のdata.table(バージョン1.8.6)に追加する場合、警告なしにそれを行う方法はないようです。
例:
dt<-old.table[0]
dt[,new_column:=""]
これは警告を生成します:
In '[.data.table'(dt, , ':='(new_column,"")):
Supplied 1 items to be assigned to 0 items of column 'new_column' (1 unused)
警告なしで新しい列を追加する方法はありますか?
良い質問。長さ1の文字ベクトル(_""
_)ではなく、空の文字ベクトル(character()
)を割り当てます。
_> DT = data.table(a=1:3,b=4:6)
> DT2 = DT[0]
> DT2
Empty data.table (0 rows) of 2 cols: a,b
> DT2[,newcol:=character()] # no warning
> DT2
Empty data.table (0 rows) of 3 cols: a,b,newcol
> sapply(DT2,class)
a b newcol
"integer" "integer" "character"
_
ところで、_""[0]
_は長さ0の文字ベクトルを作成するもう1つの方法です。好みによっては、character()
よりも入力が7文字少なくなりますが、読みにくくなる可能性があります。
空の文字列を追加する方法の追加として、data.table
には任意の行数(0を含む)があります。
DT2[ ,newcol:=character(.N) ]