26

既存の空の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)

警告なしで新しい列を追加する方法はありますか?

4

2 に答える 2

34

良い質問。character()長さ 1 の文字ベクトル ( ) ではなく、空の文字ベクトル ( ) を割り当て""ます。

> 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 の文字ベクトルを作成する別の方法があります。character()あなたの好みに応じて、よりも7文字少ないタイプですが、読みにくいかもしれません。

于 2012-11-21T10:08:09.560 に答える
8

data.tableに任意の数の行(0を含む)がある場合に、空の文字列を追加する方法を追加するだけです:

DT2[ ,newcol:=character(.N) ]
于 2013-05-29T14:43:56.753 に答える