Funciona, me crea una matriz en cada iteración, con un nombre que incluye el nº de la iteración. Me surge ahora el problema de que, dentro del mismo bucle la quiero convertir en df y ponerle nombre a las columnas, y como el nombre de la matriz es distinto cada vez, no sé cómo hacerlo. Supongo que se hará todo al crearla, pero no sé cómo. Un problema adicional es que las variables (columnas) también han de llevar la "i" incluida en el nombre, porque al final se fusionan todas las dfs y no se puede repetir el nombre de las variables. Gracias una vez más. Quoting Jesús Para Fernández <j.para.fernandez en hotmail.com>:> Con assing y un paste0 > > Mete dentro del bucle esto > > for(i in 1:7){ > assign(paste0('matriz',i),matrix(0,ncol=5,nrow=3)) > > } > > Con eso generarias 7 matrices de 5x3, llamadas matriz1, matriz2,... > > Obtener Outlook para Android<https://aka.ms/ghei36> > > ________________________________ > From: R-help-es <r-help-es-bounces en r-project.org> on behalf of > Manuel Mendoza <mmendoza en mncn.csic.es> > Sent: Friday, June 22, 2018 10:15:55 AM > To: r-help-es en r-project.org > Subject: [R-es] loop con matriz que cambia de nombre > > > Buenos días. Quiero hacer un for (j), anidado en otro for (i). En el > 2º for, en cada iteración ha de crear una matriz vacía: mat <- > matrix(nrow=nrow(data),ncol=19) pero llamándola de forma distinta cada > vez. El nombre ha de ser: paste("D",i,colnames(Data[j]),sep=""). Llevo > un rato haciendo pruebas pero no me sale. A ver si alguien pudiera > ayudarme, > gracias, > Manuel > > > > > > > > > > > > > > > > > > > > > > > > > > > > . > -- > Dr Manuel Mendoza > Department of Biogeography and Global Change > National Museum of Natural History (MNCN) > Spanish Scientific Council (CSIC) > C/ Serrano 115bis, 28006 MADRID > Spain > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es-- Dr Manuel Mendoza Department of Biogeography and Global Change National Museum of Natural History (MNCN) Spanish Scientific Council (CSIC) C/ Serrano 115bis, 28006 MADRID Spain
Es que no quieres crear objetos con nombres raros en tu entorno. Lo que quieres hacer es crear una lista de matrices (o dfs). El consejo anterior te explicaba con detalle cómo dispararte en el pie. Realmente, quieres hacer otra cosa. El vie., 22 jun. 2018 a las 19:53, Manuel Mendoza (<mmendoza en mncn.csic.es>) escribió:> > Funciona, me crea una matriz en cada iteración, con un nombre que > incluye el nº de la iteración. Me surge ahora el problema de que, > dentro del mismo bucle la quiero convertir en df y ponerle nombre a > las columnas, y como el nombre de la matriz es distinto cada vez, no > sé cómo hacerlo. Supongo que se hará todo al crearla, pero no sé cómo. > > Un problema adicional es que las variables (columnas) también han de > llevar la "i" incluida en el nombre, porque al final se fusionan todas > las dfs y no se puede repetir el nombre de las variables. > > Gracias una vez más. > > > > > Quoting Jesús Para Fernández <j.para.fernandez en hotmail.com>: > > > Con assing y un paste0 > > > > Mete dentro del bucle esto > > > > for(i in 1:7){ > > assign(paste0('matriz',i),matrix(0,ncol=5,nrow=3)) > > > > } > > > > Con eso generarias 7 matrices de 5x3, llamadas matriz1, matriz2,... > > > > Obtener Outlook para Android<https://aka.ms/ghei36> > > > > ________________________________ > > From: R-help-es <r-help-es-bounces en r-project.org> on behalf of > > Manuel Mendoza <mmendoza en mncn.csic.es> > > Sent: Friday, June 22, 2018 10:15:55 AM > > To: r-help-es en r-project.org > > Subject: [R-es] loop con matriz que cambia de nombre > > > > > > Buenos días. Quiero hacer un for (j), anidado en otro for (i). En el > > 2º for, en cada iteración ha de crear una matriz vacía: mat <- > > matrix(nrow=nrow(data),ncol=19) pero llamándola de forma distinta cada > > vez. El nombre ha de ser: paste("D",i,colnames(Data[j]),sep=""). Llevo > > un rato haciendo pruebas pero no me sale. A ver si alguien pudiera > > ayudarme, > > gracias, > > Manuel > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > . > > -- > > Dr Manuel Mendoza > > Department of Biogeography and Global Change > > National Museum of Natural History (MNCN) > > Spanish Scientific Council (CSIC) > > C/ Serrano 115bis, 28006 MADRID > > Spain > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es en r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > > -- > Dr Manuel Mendoza > Department of Biogeography and Global Change > National Museum of Natural History (MNCN) > Spanish Scientific Council (CSIC) > C/ Serrano 115bis, 28006 MADRID > Spain > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >[[alternative HTML version deleted]]
Bien, Carlos, lo de ir metiendo las dfs en una lista parece buena idea, y después puedo fusionarlas con un cbind, tal y como hago ahora mismo, después de crear cada una de ellas independientemente. Son 9 dfs, y obtener cada una de ellas toma bastante tiempo de computación. Lo que quiero es que me haga las 9 en un loop. El problema es que si no les pone nombres distintos a las variables, después no puedo identificarlas, y si les tengo que cambiar yo el nombre, no me merece la pena hace el loop. Quoting "Carlos J. Gil Bellosta" <cgb en datanalytics.com>:> Es que no quieres crear objetos con nombres raros en tu entorno. Lo que > quieres hacer es crear una lista de matrices (o dfs). El consejo anterior > te explicaba con detalle cómo dispararte en el pie. Realmente, quieres > hacer otra cosa. > > El vie., 22 jun. 2018 a las 19:53, Manuel Mendoza (<mmendoza en mncn.csic.es>) > escribió: > >> >> Funciona, me crea una matriz en cada iteración, con un nombre que >> incluye el nº de la iteración. Me surge ahora el problema de que, >> dentro del mismo bucle la quiero convertir en df y ponerle nombre a >> las columnas, y como el nombre de la matriz es distinto cada vez, no >> sé cómo hacerlo. Supongo que se hará todo al crearla, pero no sé cómo. >> >> Un problema adicional es que las variables (columnas) también han de >> llevar la "i" incluida en el nombre, porque al final se fusionan todas >> las dfs y no se puede repetir el nombre de las variables. >> >> Gracias una vez más. >> >> >> >> >> Quoting Jesús Para Fernández <j.para.fernandez en hotmail.com>: >> >> > Con assing y un paste0 >> > >> > Mete dentro del bucle esto >> > >> > for(i in 1:7){ >> > assign(paste0('matriz',i),matrix(0,ncol=5,nrow=3)) >> > >> > } >> > >> > Con eso generarias 7 matrices de 5x3, llamadas matriz1, matriz2,... >> > >> > Obtener Outlook para Android<https://aka.ms/ghei36> >> > >> > ________________________________ >> > From: R-help-es <r-help-es-bounces en r-project.org> on behalf of >> > Manuel Mendoza <mmendoza en mncn.csic.es> >> > Sent: Friday, June 22, 2018 10:15:55 AM >> > To: r-help-es en r-project.org >> > Subject: [R-es] loop con matriz que cambia de nombre >> > >> > >> > Buenos días. Quiero hacer un for (j), anidado en otro for (i). En el >> > 2º for, en cada iteración ha de crear una matriz vacía: mat <- >> > matrix(nrow=nrow(data),ncol=19) pero llamándola de forma distinta cada >> > vez. El nombre ha de ser: paste("D",i,colnames(Data[j]),sep=""). Llevo >> > un rato haciendo pruebas pero no me sale. A ver si alguien pudiera >> > ayudarme, >> > gracias, >> > Manuel >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > . >> > -- >> > Dr Manuel Mendoza >> > Department of Biogeography and Global Change >> > National Museum of Natural History (MNCN) >> > Spanish Scientific Council (CSIC) >> > C/ Serrano 115bis, 28006 MADRID >> > Spain >> > >> > _______________________________________________ >> > R-help-es mailing list >> > R-help-es en r-project.org >> > https://stat.ethz.ch/mailman/listinfo/r-help-es >> >> >> -- >> Dr Manuel Mendoza >> Department of Biogeography and Global Change >> National Museum of Natural History (MNCN) >> Spanish Scientific Council (CSIC) >> C/ Serrano 115bis, 28006 MADRID >> Spain >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es en r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >>-- Dr Manuel Mendoza Department of Biogeography and Global Change National Museum of Natural History (MNCN) Spanish Scientific Council (CSIC) C/ Serrano 115bis, 28006 MADRID Spain
Hola, En cada iteración de tu bucle, puedes: - Cambiar la matriz a data.frame. - Nombrar las columnas incluyendo si quieres el número de la iteración del bucle (tu "i"). - Esto lo puedes hacer utiizando la función "paste()". - No sé si los nombres de las variables, en cada iteración han de seguir algún patrón. Saludos, Carlos Ortega www.qualityexcellence.es El 22 de junio de 2018, 19:53, Manuel Mendoza <mmendoza en mncn.csic.es> escribió:> > Funciona, me crea una matriz en cada iteración, con un nombre que incluye > el nº de la iteración. Me surge ahora el problema de que, dentro del mismo > bucle la quiero convertir en df y ponerle nombre a las columnas, y como el > nombre de la matriz es distinto cada vez, no sé cómo hacerlo. Supongo que > se hará todo al crearla, pero no sé cómo. > > Un problema adicional es que las variables (columnas) también han de > llevar la "i" incluida en el nombre, porque al final se fusionan todas las > dfs y no se puede repetir el nombre de las variables. > > Gracias una vez más. > > > > > Quoting Jesús Para Fernández <j.para.fernandez en hotmail.com>: > > Con assing y un paste0 >> >> Mete dentro del bucle esto >> >> for(i in 1:7){ >> assign(paste0('matriz',i),matrix(0,ncol=5,nrow=3)) >> >> } >> >> Con eso generarias 7 matrices de 5x3, llamadas matriz1, matriz2,... >> >> Obtener Outlook para Android<https://aka.ms/ghei36> >> >> ________________________________ >> From: R-help-es <r-help-es-bounces en r-project.org> on behalf of Manuel >> Mendoza <mmendoza en mncn.csic.es> >> Sent: Friday, June 22, 2018 10:15:55 AM >> To: r-help-es en r-project.org >> Subject: [R-es] loop con matriz que cambia de nombre >> >> >> Buenos días. Quiero hacer un for (j), anidado en otro for (i). En el >> 2º for, en cada iteración ha de crear una matriz vacía: mat <- >> matrix(nrow=nrow(data),ncol=19) pero llamándola de forma distinta cada >> vez. El nombre ha de ser: paste("D",i,colnames(Data[j]),sep=""). Llevo >> un rato haciendo pruebas pero no me sale. A ver si alguien pudiera >> ayudarme, >> gracias, >> Manuel >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> . >> -- >> Dr Manuel Mendoza >> Department of Biogeography and Global Change >> National Museum of Natural History (MNCN) >> Spanish Scientific Council (CSIC) >> C/ Serrano 115bis, 28006 MADRID >> Spain >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es en r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> > > > -- > Dr Manuel Mendoza > Department of Biogeography and Global Change > National Museum of Natural History (MNCN) > Spanish Scientific Council (CSIC) > C/ Serrano 115bis, 28006 MADRID > Spain > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]
Gracias Carlos, eso lo sé. El problema, probablemente una chorrada, es que para cambiarle el nombre a las variables (de acuerdo a un patrón, si, que incluye el nº de la iteración), debo indicar el nombre de la df, pero éste no es siempre el mismo. Puedo darle un nombre fijo a la df, ponerle el nombre a las variables, y al final del loop cambiarle el nombre a la df, pero tampoco sé cómo ponerle un nombre nuevo que incluye paste + el nº de iteración de los dos loops anidados. Sé como crear ese nombre, con paste, pero no cómo ponérselo. Al decirlo así parece una tontería, y a lo mejor lo es, pero me tiré un rato intentándolo y no pude. Por eso acudí a vosotros. Manuel Quoting Carlos Ortega <cof en qualityexcellence.es>:> Hola, > > En cada iteración de tu bucle, puedes: > > - Cambiar la matriz a data.frame. > - Nombrar las columnas incluyendo si quieres el número de la iteración > del bucle (tu "i"). > - Esto lo puedes hacer utiizando la función "paste()". > - No sé si los nombres de las variables, en cada iteración han de > seguir algún patrón. > > > Saludos, > Carlos Ortega > www.qualityexcellence.es > > El 22 de junio de 2018, 19:53, Manuel Mendoza <mmendoza en mncn.csic.es> > escribió: > >> >> Funciona, me crea una matriz en cada iteración, con un nombre que incluye >> el nº de la iteración. Me surge ahora el problema de que, dentro del mismo >> bucle la quiero convertir en df y ponerle nombre a las columnas, y como el >> nombre de la matriz es distinto cada vez, no sé cómo hacerlo. Supongo que >> se hará todo al crearla, pero no sé cómo. >> >> Un problema adicional es que las variables (columnas) también han de >> llevar la "i" incluida en el nombre, porque al final se fusionan todas las >> dfs y no se puede repetir el nombre de las variables. >> >> Gracias una vez más. >> >> >> >> >> Quoting Jesús Para Fernández <j.para.fernandez en hotmail.com>: >> >> Con assing y un paste0 >>> >>> Mete dentro del bucle esto >>> >>> for(i in 1:7){ >>> assign(paste0('matriz',i),matrix(0,ncol=5,nrow=3)) >>> >>> } >>> >>> Con eso generarias 7 matrices de 5x3, llamadas matriz1, matriz2,... >>> >>> Obtener Outlook para Android<https://aka.ms/ghei36> >>> >>> ________________________________ >>> From: R-help-es <r-help-es-bounces en r-project.org> on behalf of Manuel >>> Mendoza <mmendoza en mncn.csic.es> >>> Sent: Friday, June 22, 2018 10:15:55 AM >>> To: r-help-es en r-project.org >>> Subject: [R-es] loop con matriz que cambia de nombre >>> >>> >>> Buenos días. Quiero hacer un for (j), anidado en otro for (i). En el >>> 2º for, en cada iteración ha de crear una matriz vacía: mat <- >>> matrix(nrow=nrow(data),ncol=19) pero llamándola de forma distinta cada >>> vez. El nombre ha de ser: paste("D",i,colnames(Data[j]),sep=""). Llevo >>> un rato haciendo pruebas pero no me sale. A ver si alguien pudiera >>> ayudarme, >>> gracias, >>> Manuel >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> . >>> -- >>> Dr Manuel Mendoza >>> Department of Biogeography and Global Change >>> National Museum of Natural History (MNCN) >>> Spanish Scientific Council (CSIC) >>> C/ Serrano 115bis, 28006 MADRID >>> Spain >>> >>> _______________________________________________ >>> R-help-es mailing list >>> R-help-es en r-project.org >>> https://stat.ethz.ch/mailman/listinfo/r-help-es >>> >> >> >> -- >> Dr Manuel Mendoza >> Department of Biogeography and Global Change >> National Museum of Natural History (MNCN) >> Spanish Scientific Council (CSIC) >> C/ Serrano 115bis, 28006 MADRID >> Spain >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es en r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> > > > > -- > Saludos, > Carlos Ortega > www.qualityexcellence.es-- Dr Manuel Mendoza Department of Biogeography and Global Change National Museum of Natural History (MNCN) Spanish Scientific Council (CSIC) C/ Serrano 115bis, 28006 MADRID Spain