Estoy tratando de compilar datos de varios archivos utilizando for loops en R. Me gustaría obtener todos los datos en una tabla. El siguiente cálculo es solo un ejemplo.Loops R: Agregar una columna a una tabla si ya no existe
library(reshape)
dat1 <- data.frame("Specimen" = paste("sp", 1:10, sep=""), "Density_1" = rnorm(10,4,2), "Density_2" = rnorm(10,4,2), "Density_3" = rnorm(10,4,2))
dat2 <- data.frame("Specimen" = paste("fg", 1:10, sep=""), "Density_1" = rnorm(10,4,2), "Density_2" = rnorm(10,4,2))
dat <- c("dat1", "dat2")
for(i in 1:length(dat)){
data <- get(dat[i])
melt.data <- melt(data, id = 1)
assign(paste(dat[i], "tbl", sep=""), cast(melt.data, ~ variable, mean))
}
rbind(dat1tbl, dat2tbl)
¿Cuál es la forma más sencilla de agregar una columna extra en dat2? Me gustaría obtener el mismo nombre de columna ("Density_3" en este caso) y llenarlo con ceros, si aún no existe. Supongamos que tengo ~ 100 mesas con número de columnas (Density_1, 2, 3, etc.) que varía entre 5 y 6.
Probé siguiente, pero no funcionó:
if(names(data) %in% "Density_3" == FALSE){
dat.all$Density_3 <- 0
} else {
dat.all$Density_3 <- dat.all$Density3}
Otra: ¿hay una manera fácil de rbind() las tablas? Parece que rbind (get (dat)) no funciona.
No sabía nada del comando rbind.fill(). Esa es la que he estado buscando. ¡Gracias! – Largh