Подтвердить что ты не робот

Добавить столбец в пустую таблицу данных в R

Для добавления нового столбца в существующую пустую таблицу 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)

Есть ли способ добавить новый столбец без предупреждений?

4b9b3361

Ответ 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(), но, возможно, менее читабельны, в зависимости от ваших предпочтений.

Ответ 2

Как добавление, как добавить пустой столбец символов, когда data.table имеет произвольное количество строк (включая 0):

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