在R中添加列以清空data.table

时间:2012-11-21 09:41:37

标签: r data.table

要将新列添加到现有的空 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)

有没有办法在没有警告的情况下添加新列?

2 个答案:

答案 0 :(得分:30)

好问题。指定空字符向量(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个字符但可能不太可读,具体取决于您的偏好。

答案 1 :(得分:7)

data.table具有任意行数(包括0)时,如同添加空字符列一样:

DT2[ ,newcol:=character(.N) ]