español - r data frame mtcars
R: inserta un vector como una fila en data.frame (3)
No diría que es la solución más elegante y bonita que existe, pero hace el trabajo bien. Tenga en cuenta 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 abajo).
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
¿Puedo insertar un vector
como una fila en un data.frame
? ¿Si es así, cómo?
rbind
es bueno, pero realmente complicado, ya que maneja el número de fila exacto antes y después. Una forma más rápida es usar insertRow
en el paquete miscTools
.
En el ejemplo del conjunto de datos anterior, 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
Hope sería útil.
Hacer un datagrama R desde el vector, horizontalmente
La idea clave es usar el método de transposición R: t(...)
para transponer el vector antes de pasarlo al constructor de data.frame
.
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;
Huellas dactilares:
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 hace esto más de unos cientos de filas, espere esperar mucho tiempo. Si necesita un rayo rápido, necesita preasignar el espacio o utilizar el método de la lista como se muestra aquí: https://.com/a/20689857/445131