Re: [R-es] Listas Recursivas

2015-01-29 Por tema Jorge I Velez
Hola Jesus,

Intenta lo siguiente, donde x es tu w.list:

R unlist(sapply(x, '[', 'a'))
 a  a
 1 11
R unlist(sapply(x, '[', 'b'))
b1 b2 b3 b4 b5 b1 b2 b3 b4 b5
41 42 43 44 45 71 72 73 74 75
R unlist(sapply(x, '[', 'c'))
  c   c
X Z

Saludos,
Jorge.-


2015-01-29 22:37 GMT+11:00 Jesus Herranz jesus.herr...@imdea.org:

 Hola

 Tengo un an�lisis en el que como resultado obtengo una lista recursiva, es
 decir, una lista cuyos componentes a su vez son listas. Son varias
 iteraciones de una funci�n que proporciona varios resultados de inter�s de
 distinta naturaleza y por eso los uno en una lista. Las iteraciones son
 hechas en paralelo, y los resultados de una funci�n de este tipo suelen ser
 empaquetados a su vez en una lista (Por ejemplo, ClusterApply del paquete
 snow )

 Bueno, esto es para poner en situaci�n el problema, porque el tema es mucho
 m�s general, y he tratado de sacarlo del contexto para que se pueda
 entender
 mejor. Digamos que tengo lo siguiente: una lista que tiene 2 listas con los
 mismos nombres de componentes (cada una de ellas ser�an los resultados de
 una iteraci�n). Lo que quiero es tener vectores separados para a, b y c. El
 problema parece sencillo, pero no encuentro la forma de acceder bien a los
 elementos de la lista; y con el unlist lo junta todo y lo convierte a
 car�cter, lo que no es muy �til. Al final, la �nica soluci�n que he
 encontrado es con un for, pero me gustar�a hacerlo de otra forma.

 Gracias



 w.list = list ( list ( a = 1  , b = 41:45 , c = c(X) ) ,

 list ( a = 11 , b = 71:75 , c = c(Z) ) )

 w.list



 a.all = NULL ; b.all = NULL; c.all = NULL

 for ( i in 1:2 )

 { a.all = c ( a.all , w.list[[i]]$a )

   b.all = c ( b.all , w.list[[i]]$b )

   c.all = c ( c.all , w.list[[i]]$c )

 }

 a.all

 b.all

 c.all










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

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


Re: [R-es] Listas Recursivas

2015-01-29 Por tema Carlos Ortega
Otra alternativa...

 library(data.table)
 lstData - Map(as.data.frame, w.list)
 Data - rbindlist(lstData)
 Data
 a  b c
 1:  1 41 X
 2:  1 42 X
 3:  1 43 X
 4:  1 44 X
 5:  1 45 X
 6: 11 71 Z
 7: 11 72 Z
 8: 11 73 Z
 9: 11 74 Z
10: 11 75 Z


Saludos,
Carlos Ortega
www.qualityexcellence.es

El 29 de enero de 2015, 13:22, Isidro Hidalgo ihida...@jccm.es escribió:

 mapply(c, w.list[[1]], w.list[[2]])

 Si tienes más listas, simplemente las pones a continuación de la última y
 mapply te las une igual...
 Un saludo.

 Isidro Hidalgo Arellano
 Observatorio Regional de Empleo
 Consejería de Empleo y Economía
 http://www.jccm.es

  -Mensaje original-
  De: R-help-es [mailto:r-help-es-boun...@r-project.org] En nombre de
  Jorge I Velez
  Enviado el: jueves, 29 de enero de 2015 13:08
  Para: Jesus Herranz
  CC: R-help-es
  Asunto: Re: [R-es] Listas Recursivas
 
  Hola Jesus,
 
  Intenta lo siguiente, donde x es tu w.list:
 
  R unlist(sapply(x, '[', 'a'))
   a  a
   1 11
  R unlist(sapply(x, '[', 'b'))
  b1 b2 b3 b4 b5 b1 b2 b3 b4 b5
  41 42 43 44 45 71 72 73 74 75
  R unlist(sapply(x, '[', 'c'))
c   c
  X Z
 
  Saludos,
  Jorge.-
 
 
  2015-01-29 22:37 GMT+11:00 Jesus Herranz jesus.herr...@imdea.org:
 
   Hola
  
   Tengo un an lisis en el que como resultado obtengo una lista
   recursiva, es decir, una lista cuyos componentes a su vez son listas.
   Son varias iteraciones de una funci n que proporciona varios
   resultados de inter s de distinta naturaleza y por eso los uno en una
   lista. Las iteraciones son hechas en paralelo, y los resultados de
  una
   funci n de este tipo suelen ser empaquetados a su vez en una lista
   (Por ejemplo, ClusterApply del paquete snow )
  
   Bueno, esto es para poner en situaci n el problema, porque el tema es
   mucho m s general, y he tratado de sacarlo del contexto para que se
   pueda entender mejor. Digamos que tengo lo siguiente: una lista que
   tiene 2 listas con los mismos nombres de componentes (cada una de
   ellas ser an los resultados de una iteraci n). Lo que quiero es tener
   vectores separados para a, b y c. El problema parece sencillo, pero
  no
   encuentro la forma de acceder bien a los elementos de la lista; y con
   el unlist lo junta todo y lo convierte a car cter, lo que no es muy
til. Al final, la  nica soluci n que he encontrado es con un for,
   pero me gustar a hacerlo de otra forma.
  
   Gracias
  
  
  
   w.list = list ( list ( a = 1  , b = 41:45 , c = c(X) ) ,
  
   list ( a = 11 , b = 71:75 , c = c(Z) ) )
  
   w.list
  
  
  
   a.all = NULL ; b.all = NULL; c.all = NULL
  
   for ( i in 1:2 )
  
   { a.all = c ( a.all , w.list[[i]]$a )
  
 b.all = c ( b.all , w.list[[i]]$b )
  
 c.all = c ( c.all , w.list[[i]]$c )
  
   }
  
   a.all
  
   b.all
  
   c.all
  
  
  
  
  
  
  
  
  
  
   [[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]]

 ___
 R-help-es mailing list
 R-help-es@r-project.org
 https://stat.ethz.ch/mailman/listinfo/r-help-es




-- 
Saludos,
Carlos Ortega
www.qualityexcellence.es

[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es