una - Añadir columna a data.table vacía en R
extraer una columna de una tabla en r (2)
Para agregar una nueva columna a una tabla de datos vacía existente ( versión 1.8.6 ) parece que no hay manera de hacerlo sin que se le avise.
Ejemplo:
dt<-old.table[0]
dt[,new_column:=""]
Esto produce la advertencia:
In ''[.data.table''(dt, , '':=''(new_column,"")):
Supplied 1 items to be assigned to 0 items of column ''new_column'' (1 unused)
¿Hay alguna manera de agregar una nueva columna sin advertencias?
Buena pregunta. Asigne un vector de caracteres vacío ( character()
) en lugar de un vector de carácter de longitud 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"
Por cierto, ""[0]
es otra forma de crear un vector de caracteres de longitud 0; 7 caracteres menos que escribir en character()
pero posiblemente menos legibles, según sus preferencias.
Solo como una adición, cómo agregar una columna de caracteres vacía, cuando data.table
tiene un número arbitrario de filas (incluido 0):
DT2[ ,newcol:=character(.N) ]