On 26/02/2015 9:27 AM, Alaios via R-help wrote:
Dear all,in my code I am using the mix() function that returns results in a 
list. The result looks like
List of 10
  $ parameters  :'data.frame':   2 obs. of  3 variables:
   ..$ pi   : num [1:2] 0.77 0.23
   ..$ mu   : num [1:2] -7034 162783
   ..$ sigma: num [1:2] 20235 95261
  $ se          :'data.frame':   2 obs. of  3 variables:
   ..$ pi.se   : num [1:2] 0.0423 0.0423
   ..$ mu.se   : num [1:2] 177 12422
   ..$ sigma.se: num [1:2] 1067 65551
  $ distribution: chr "norm"
  $ constraint  :List of 8
   ..$ conpi   : chr "NONE"
   ..$ conmu   : chr "NONE"
   ..$ consigma: chr "NONE"
   ..$ fixpi   : NULL
   ..$ fixmu   : NULL
   ..$ fixsigma: NULL
   ..$ cov     : NULL
   ..$ size    : NULL
  $ chisq       : num 28
  $ df          : num 5
  $ P           : num 3.67e-05
  $ vmat        : num [1:5, 1:5] 1.79e-03 -3.69e-01 -1.17e+02 2.95e+01 
-2.63e+03 ...
  $ mixdata     :Classes ‘mixdata’ and 'data.frame':     11 obs. of  2 
variables:
   ..$ X    : num [1:11] 1e+04 2e+04 3e+04 4e+04 5e+04 6e+04 7e+04 8e+04 9e+04 
1e+05 ...
   ..$ count: int [1:11] 993 137 82 30 21 5 7 14 21 2 ...
  $ usecondit   : logi FALSE
  - attr(*, "class")= chr "mix"

In my code I am trying around 10.000 fit (and each of these fits returns the 
list above) and I want to keep those in a way that later on I would be able to 
search inside all the lists.For example I would like to find inside those 
10.000 lists which one has the smallest $chisq value. What would be a suitable 
way to implement that in R? Luckily I am working in a computer with a lot of 
ram so storing 10.000 lists temporary in memory before saving to disk would not 
be a problem.
What would you suggest me?

If all of the lists have the same components, then it would be convenient to convert them into a big matrix or dataframe, with one row per fit. It would need to be a dataframe if you include character data along with the numbers, but a matrix would be faster, if it's only numbers that you need. You'd use code like this to produce the matrix:

results <- matrix(NA_real_, 10000, ncols = .... however many you keep ....)
for (i in 1:10000) {
  fit <- .... code to get the fit object ....
results[i,] <- with(fit, c(parameters$pi, parameters$mu, parameters$sigma, ...... fill in the rest ......)
}

Duncan Murdoch

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to