¿Puedo insertar un vector
como una fila en un data.frame
? ¿Si es así, cómo?R: inserte un vector como una fila en data.frame
Respuesta
No diría que es la solución más elegante y bonita que existe, pero hace el trabajo bien. Observe que cada fila de dataframe lleva su propio nombre de fila, lo que se convierte en un problema al insertar nuevas líneas. Dicho esto, puede reparar esto con row.names
(ver a continuación).
my.df <- data.frame(a = runif(10), b = runif(10), c = runif(10))
my.vec <- c(1, 1, 1)
new.df <- rbind(my.df[1:5, ], my.vec, my.df[6:nrow(my.df), ])
new.df
a b c
1 0.45433791 0.3798105 0.84514864
2 0.07074529 0.4985765 0.53912585
3 0.09645574 0.5441647 0.96636213
4 0.60788436 0.6070706 0.53791603
5 0.01593911 0.1697248 0.62697924
6 1.00000000 1.0000000 1.00000000
61 0.98455694 0.2206702 0.85500531
7 0.85356834 0.5279596 0.27462326
8 0.48028935 0.6689572 0.05428349
9 0.95675901 0.6875491 0.77642924
10 0.24691330 0.7980741 0.24013096
row.names(new.df) <- 1:nrow(new.df) # make row names pretty again
Hacer una trama de datos de I a partir del vector, horizontal
La idea clave es utilizar el método de transposición R: t(...)
transponer el vector antes de pasarlo a la data.frame
constructor.
my_name_vector = c("penguin1", "penguin2", "penguin3", "penguin4");
my_data_vector = c("Skipper", "Kowalski", "Rico", "Private");
supplemental_vector = c("Mumble", "Dorthy", "Norma", "Memphis");
#create a data frame out of a transposed vector
penguins = as.data.frame(t(my_data_vector));
#change the names of the dataframe to be the titles
colnames(penguins) <- my_name_vector;
supplemental_data_frame <- data.frame(t(supplemental_vector));
colnames(supplemental_data_frame) <- my_name_vector;
supplemental_data_frame;
#rbind means row bind, pass in two data.frame
penguins <- rbind(penguins, supplemental_data_frame);
penguins;
Lienzo:
penguin1 penguin2 penguin3 penguin4
1 Mumble Dorthy Norma Memphis
penguin1 penguin2 penguin3 penguin4
1 Skipper Kowalski Rico Private
2 Mumble Dorthy Norma Memphis
El método rbind es muy ineficiente, por lo que si usted está haciendo esto más de unos pocos cientos de filas, que espera que esperar mucho tiempo. Si tiene que ser rápido como un rayo, entonces necesita comprobar la validez de asignar espacio o utilizar el método de lista como se muestra aquí: https://stackoverflow.com/a/20689857/445131
rbind
es buena, pero muy difícil sin embargo como para manejar el número de fila exacta antes y después. Una forma más rápida es usar insertRow
en el paquete miscTools
.
En el ejemplo anterior conjunto de datos, el código sería:
my.df <- as.matrix(data.frame(a = runif(10), b = runif(10), c = runif(10)))
my.vec <- c(1, 1, 1)
new.df <- insertRow(my.df,7,my.vec)
new.df
Esperanza sería de gran ayuda.
¡Eso es MUCHO MEJOR que rbind! ¡Gracias! – Rodrigo
- 1. Cómo obtener una fila de R data.frame
- 2. Extraer columna de data.frame como un vector
- 3. big.matrix como data.frame en R
- 4. cómo obtener cada columna como data.frame (en lugar de un vector) de un data.frame?
- 5. ¿Cómo transformo un vector y una lista de listas en un data.frame en R?
- 6. R-friendly forma de convertir la columna R data.frame en un vector?
- 7. ¿Cómo obtener un data.frame en una matriz multidimensional en R?
- 8. R: ¿Cómo reemplazar elementos de un data.frame?
- 9. Inserte una nueva fila en DataTable
- 10. Cómo guardar un data.frame en R?
- 11. Agregando un dataframe al final de otro data.frame en R
- 12. subconjunto() de un vector en R
- 13. R: ¿Cómo puedo reordenar las filas de una matriz, data.frame o vector según otra
- 14. Cómo ordenar y filtrar data.frame en R?
- 15. Cómo adjuntar un simple data.frame a un SpatialPolygonDataFrame en R?
- 16. Sin memoria cuando se modifica un gran R data.frame
- 17. ¿Cómo agregar documentación a un data.frame en R?
- 18. R: Obtención de valores de atributos como un vector
- 19. data.frame filas a una lista
- 20. R: Aplanamiento genérico de JSON a data.frame
- 21. R identificar una fila antes de un cambio de signo
- 22. Dividir un vector en trozos en R
- 23. Longitud máxima para un vector en R
- 24. MySql: inserte una fila y obtenga el contenido
- 25. Crear un data.frame en R con nombres de columna asignados dinámicamente
- 26. R: Ordenar columnas múltiples por otro data.frame?
- 27. Dividir un vector de cadena en R
- 28. ¿Cómo extraer los recuentos como un vector de una tabla en R?
- 29. Inserte un elemento div como primario
- 30. ¿Cómo hacer que MatrixForm muestre la fila horizontalmente como un vector de fila real y no verticalmente como un vector de columna?
Puede hacer los nombres de las filas en 'rbind' con el argumento' make.row.names = FALSE' –