对于向现有空的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)
有没有一种方法可以添加新列而不会收到警告?
对于向现有空的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)
有没有一种方法可以添加新列而不会收到警告?
好问题。使用一个空字符向量 (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]
是创建零长度字符向量的另一种方法;比 character()
减少 7 个字符,但可读性可能会降低,具体取决于您的喜好。
在data.table
中添加一个空的字符列,即使它有任意数量的行(包括0),可以按照以下方式进行操作:
DT2[ ,newcol:=character(.N) ]