r
  • data.table
  • 2012-11-21 45 views 19 likes 
    19

    中添加一列以清空data.table要向现有的空列添加新列data.table版本1.8.6)似乎没有办法在未经警告的情况下执行此操作。在R

    例子:

    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) 
    

    有没有办法在没有警告添加新列?

    +13

    不要忘了接受一个答案,请。 –

    回答

    25

    好问题。指定空字符矢量(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" 
    

    btw,""[0]是另一种创建0长度字符向量的方法;根据您的喜好,输入的字符数少于character(),但可能不太可读。

    5

    ,正如除了如何添加一个空字符列,当data.table有行(包括0)的任意数:

    DT2[ ,newcol:=character(.N) ] 
    
    相关问题