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]]