R: crear múltiples dataframes usando un bucle for solo almacena el dataframe final en la lista.
Estoy intentando crear varios dataframes con nombres utilizando un bucle for. Una versión simplificada del código que estoy utilizando se muestra a continuación. Me gustaría mantener la estructura del bucle lo más similar posible, ya que se necesita para el análisis más complejo que estoy haciendo. El problema que tengo es que solo el último dataframe se guarda en la lista. Todos los demás elementos en la lista están vacíos. ¿Qué está causando este comportamiento y cómo puedo editar el código para solucionarlo?
dfs = list()
df.names = c("a", "b", "c")
for (i in length(df.names)) {
df = data.frame()
tmp = data.frame(x = 1, y = 2, z = 3)
df = rbind(df,tmp)
dfs[[i]] = df
}
names(dfs) = df.names
davy.ai
El problema está en la definición del bucle
for
. En la definición actual,i
solamente toma el valor delength(df.names)
, que es 3. Esto significa que el bucle se ejecuta solamente una vez en lugar de tres veces. Para solucionar esto, cambia la definición del bucle afor (i in 1:length(df.names))
de manera quei
tome los valores 1, 2 y 3. El código corregido se muestra a continuación:Esto debería crear una lista de tres dataframes, cada uno con una fila que contiene los valores 1, 2 y 3 en columnas llamadas “x”, “y” y “z”. La lista debería tener los nombres “a”, “b” y “c” respectivamente.