vacio una tabla seleccionar filas faltantes extraer eliminar elementos datos data crear contar columna r dataframe

una - Cómo inicializar el marco de datos vacío(lote de columnas al mismo tiempo) en R



extraer una columna de una tabla en r (2)

Encontré cómo inicializar un marco de datos vacío con 3 o 4 dimensiones. Es como

df <- data.frame(Date=as.Date(character()), File=character(), User=numeric(), stringsAsFactors=FALSE)

Sin embargo, ¿cuál es la forma más efectiva de inicializar un data.frame vacío con muchos nombres de columna? me gusta

mynames <- paste("hello", c(1:10000))

La manera incorrecta que probé es:

df <- data.frame(mynames=numeric())

Muchas gracias de antemano


Haría esto usando setDF (o setDT , si prefieres data.table como salida) y setnames :

library(data.table) DF <- setnames(setDF(lapply(integer(1e4), function(...) character(0L))), paste0("hello", 1:1e4)) head(names(DF)) # [1] "hello1" "hello2" "hello3" "hello4" "hello5" "hello6"

Ambos pasos ( setnames y setDF ) son más eficientes que las contrapartes base , ya que no se realizan copias.

Un punto de referencia:

library(microbenchmark) microbenchmark(times = 1000, base = {df <- data.frame(matrix(ncol = 10000, nrow = 0)) colnames(df) <- paste0("hello", c(1:10000))}, DT = setnames(setDF(lapply(integer(1e4), function(...) character(0L))), paste0("hello", 1:1e4))) # Unit: milliseconds # expr min lq mean median uq max neval cld # base 26.77218 30.94223 37.30173 36.76721 37.80338 102.2379 1000 b # DT 16.68004 23.18865 30.60573 29.18421 36.03590 178.1045 1000 a


Tal vez esto -

df <- data.frame(matrix(ncol = 10000, nrow = 0)) colnames(df) <- paste0("hello", c(1:10000))

Y la sugerencia de @ joran - df <- setNames(data.frame(matrix(ncol = 10000, nrow = 0)),paste0("hello", c(1:10000)))