Buen día a todo Tengo un duda con listas. He creado una listas en la que algunas categorias (names) se repiten. Busco una manera de unir estas. por ejemplo: $`azul` [1] dato1 $`azul` [1] dato2 $`rojo` [1] dato3 $`negro` [1] dato4 Lo que busco, es ana manera de unir las categorias repetidas, obteniendo una lista en la cual algunas categorias presentarán más datos que otras. Con el ejemplo anterior sería: $`azul` [1] dato1 dato2 $`rojo` [1] dato3 $`negro` [1] dato4 Gracias a todos y feliz día -- Pablo [[alternative HTML version deleted]]
En tu caso concreto bastaría algo así: a <- list( a = 1, a = 2, b = 1 ) tapply( unlist( a ), names( a ), c ) $a a a 1 2 $b b 1 Sólo vale si las entradas de tu lista (tal y como muestras en el ejemplo) son atómicas. Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El día 12 de mayo de 2011 19:29, Pablo C <pablouis en gmail.com> escribió:> Buen día a todo > > Tengo un duda con listas. He creado una listas en la que algunas categorias > (names) se repiten. Busco una manera de unir estas. > > por ejemplo: > > $`azul` > [1] dato1 > $`azul` > [1] dato2 > $`rojo` > [1] dato3 > $`negro` > [1] dato4 > > Lo que busco, es ana manera de unir las categorias repetidas, obteniendo una > lista en la cual algunas categorias presentarán más datos que otras. > Con el ejemplo anterior sería: > > $`azul` > [1] dato1 dato2 > $`rojo` > [1] dato3 > $`negro` > [1] dato4 > > > Gracias a todos y feliz día > > -- > Pablo > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >
Hola Pablo, Intenta tapply(unlist(lista), names(lista), c) Saludos, Jorge Ivan Velez 2011/5/12 Pablo C <>> Buen día a todo > > Tengo un duda con listas. He creado una listas en la que algunas categorias > (names) se repiten. Busco una manera de unir estas. > > por ejemplo: > > $`azul` > [1] dato1 > $`azul` > [1] dato2 > $`rojo` > [1] dato3 > $`negro` > [1] dato4 > > Lo que busco, es ana manera de unir las categorias repetidas, obteniendo > una > lista en la cual algunas categorias presentarán más datos que otras. > Con el ejemplo anterior sería: > > $`azul` > [1] dato1 dato2 > $`rojo` > [1] dato3 > $`negro` > [1] dato4 > > > Gracias a todos y feliz día > > -- > Pablo > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >[[alternative HTML version deleted]]
Gracias por la ayuda, muy útil. Por otro lado, si las categorias repetidas fueran de una data.frame y las quisiera unificar (quedando algunas categorias con mas datos que otras) por ejemplo, con: a a b c c dato 1a 2a 3a 4a 5a obtener (otro data.frame): a b c 1a 3a 4a 2a 5a Mil gracias, Pablo El 12 de mayo de 2011 12:34, Carlos J. Gil Bellosta <cgb@datanalytics.com>escribió:> En tu caso concreto bastaría algo así: > > a <- list( a = 1, a = 2, b = 1 ) > tapply( unlist( a ), names( a ), c ) > $a > a a > 1 2 > > $b > b > 1 > > Sólo vale si las entradas de tu lista (tal y como muestras en el > ejemplo) son atómicas. > > Un saludo, > > Carlos J. Gil Bellosta > http://www.datanalytics.com > > El día 12 de mayo de 2011 19:29, Pablo C <pablouis@gmail.com> escribió: > > Buen día a todo > > > > Tengo un duda con listas. He creado una listas en la que algunas > categorias > > (names) se repiten. Busco una manera de unir estas. > > > > por ejemplo: > > > > $`azul` > > [1] dato1 > > $`azul` > > [1] dato2 > > $`rojo` > > [1] dato3 > > $`negro` > > [1] dato4 > > > > Lo que busco, es ana manera de unir las categorias repetidas, obteniendo > una > > lista en la cual algunas categorias presentarán más datos que otras. > > Con el ejemplo anterior sería: > > > > $`azul` > > [1] dato1 dato2 > > $`rojo` > > [1] dato3 > > $`negro` > > [1] dato4 > > > > > > Gracias a todos y feliz día > > > > -- > > Pablo > > > > [[alternative HTML version deleted]] > > > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es@r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > > > >[[alternative HTML version deleted]]
Buenas tardes Pablo, He aqui una forma: # algunos datos set.seed(123) x <- rnorm(5) names(x) <- rep(letters[1:3], c(2, 1, 2)) x # proceso out <- split(x, names(x)) # dividiendo por nombres de x themax <- max(sapply(out, length)) # numero maximo de datos que NO son NA # lo que necesitas sapply(out, function(l) l[1:themax]) Mira tambien ?reshape require(reshape) ?melt Saludos, Jorge 2011/5/12 Pablo C <>> Gracias por la ayuda, muy útil. > > Por otro lado, si las categorias repetidas fueran de una data.frame y las > quisiera unificar (quedando algunas categorias con mas datos que otras) > > por ejemplo, con: > > a a b c c > > dato 1a 2a 3a 4a 5a > > > obtener (otro data.frame): > > a b c > 1a 3a 4a > 2a 5a > > > Mil gracias, > > Pablo > > > > > > > > > > > El 12 de mayo de 2011 12:34, Carlos J. Gil Bellosta <> escribió: > > En tu caso concreto bastaría algo así: >> >> a <- list( a = 1, a = 2, b = 1 ) >> tapply( unlist( a ), names( a ), c ) >> $a >> a a >> 1 2 >> >> $b >> b >> 1 >> >> Sólo vale si las entradas de tu lista (tal y como muestras en el >> ejemplo) son atómicas. >> >> Un saludo, >> >> Carlos J. Gil Bellosta >> http://www.datanalytics.com >> >> El día 12 de mayo de 2011 19:29, Pablo C <> escribió: >> > Buen día a todo >> > >> > Tengo un duda con listas. He creado una listas en la que algunas >> categorias >> > (names) se repiten. Busco una manera de unir estas. >> > >> > por ejemplo: >> > >> > $`azul` >> > [1] dato1 >> > $`azul` >> > [1] dato2 >> > $`rojo` >> > [1] dato3 >> > $`negro` >> > [1] dato4 >> > >> > Lo que busco, es ana manera de unir las categorias repetidas, obteniendo >> una >> > lista en la cual algunas categorias presentarán más datos que otras. >> > Con el ejemplo anterior sería: >> > >> > $`azul` >> > [1] dato1 dato2 >> > $`rojo` >> > [1] dato3 >> > $`negro` >> > [1] dato4 >> > >> > >> > Gracias a todos y feliz día >> > >> > -- >> > Pablo >> > >> > [[alternative HTML version deleted]] >> > >> > >> > _______________________________________________ >> > R-help-es mailing list >> > R-help-es@r-project.org >> > https://stat.ethz.ch/mailman/listinfo/r-help-es >> > >> > >> > >[[alternative HTML version deleted]]