Ответ 1
Хороший вопрос. Назначьте пустой вектор символов (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; 7 символов менее печатаются, чем character()
, но, возможно, менее читабельны, в зависимости от ваших предпочтений.