2011-05-23 17 views
28

me gustaría crear un data.frame en R con m (una variable) número de columnas (por ejemplo 30), y 2 filas y llenar todos los valores de la data.frame inicialmente con 0's. Parece que data.frame rellena valores basados ​​en filas en lugar de columnas, ¿alguna sugerencia de cómo puedo hacer esto? Gracias :)Crear un data.frame con m columnas y 2 filas

Respuesta

47

¿Tiene m realmente ser un data.frame() o será un matrix() suficiente?

m <- matrix(0, ncol = 30, nrow = 2) 

Puede envolver un data.frame() torno a que si es necesario:

m <- data.frame(m) 

o todos en una sola línea: m <- data.frame(matrix(0, ncol = 30, nrow = 2))

+0

Y eso fue exactamente lo _I_ iba a escribir. +1;) Mi única adición sería señalar explícitamente que 'data.frame()' típicamente especifica los datos por columna a través de sus argumentos tag = value. – joran

26

Para completar:

A lo largo de las líneas de respuesta de Chase , que suelen utilizar as.data.frame para obligar a la matriz a un data.frame:

m <- as.data.frame(matrix(0, ncol = 30, nrow = 2))

EDIT: speed test data.frame vs as.data.frame

system.time(replicate(10000, data.frame(matrix(0, ncol = 30, nrow = 2)))) 
    user system elapsed 
    8.005 0.108 8.165 

system.time(replicate(10000, as.data.frame(matrix(0, ncol = 30, nrow = 2)))) 
    user system elapsed 
    3.759 0.048 3.802 

Sí, parece ser más rápido (alrededor de 2 veces).

+0

¿qué hay de diferente en tu respuesta? es mas rapido? –

+0

@Eduardo parece ser un poco más rápido - ver arriba. – Greg

Cuestiones relacionadas