Skip to content
Back to formatted view

Raw Message

Message-ID: <d8ad40b50911070532u1d6df226hf4f8f4ef16458e82@mail.gmail.com>
Date: 2009-11-07T13:32:32Z
From: Barry Rowlingson
Subject: which data structure to choose to keep multile objects?
In-Reply-To: <26231601.post@talk.nabble.com>

On Fri, Nov 6, 2009 at 11:58 PM, clue_less <suhai_tim_liu at yahoo.com> wrote:
>
> I have a function called nnmf which takes in one matrix and ?returns two
> matrices. for example,
>
>> X
> ? ? [,1] [,2] [,3] [,4]
> [1,] ? ?1 ? ?4 ? ?7 ? 10
> [2,] ? ?2 ? ?5 ? ?8 ? 11
> [3,] ? ?3 ? ?6 ? ?9 ? 12
>
>> z=nnmf(X,2)
>
>> z$W
> ? ? ? ? ?[,1] ? ? ?[,2]
> [1,] 0.8645422 0.6643681
> [2,] 1.7411863 0.5377504
> [3,] 2.6179287 0.4111063
>> z$H
> ? ? ? ? ? [,1] ? ? [,2] ? ? [,3] ? ? [,4]
> [1,] 1.14299486 1.692260 2.241279 ?2.79030
> [2,] 0.01838514 3.818559 7.619719 11.42087
>
> ----------------------------------------
>
> Now I would like to run it many times --
>
> z2 = nnmf(X,2)
> z3 = nnmf(X,3)
> z4 = nnmf(X,4)
> z5 = nnmf(X,5)
> ...
>
> But I would like to do it automatically , something like -
>
> xprocess<-function(max_val) {
> ? for (iter in ?2: max_val) {
>
> ? ? ?zz = sprintf( "z%s", iter )
>
> ? ? ?zz <-nnmf(X,iter)
>
> ? }
>
> }
>
> xprocess(10)
>
>
> ----
>
> But how could I keep collection of my results each run?
>
> Shall I have a data structure to keep appending results?
>
> something like
>
> theta = {}
>
> ?
>
> which data structure to choose to keep multile objects?
>

 You're already using one! It's called a list:

zz=list()
 for(i in 1:10){
  zz[[i]] = nnmf(X,i)
}

then you can do:

zz[[1]]$W and zz[[1]]$H

 Note the BIG difference between zz[1] and zz[[1]] though.

Barry