[R] Non repetitive permutations/combinations of elements

Berton Gunter gunter.berton at gene.com
Mon May 8 23:59:45 CEST 2006


 expand.grid(rep(list(c(-1, 1)), 4))  suffices I believe.

-- Bert Gunter
Genentech Non-Clinical Statistics
South San Francisco, CA
  

> -----Original Message-----
> From: r-help-bounces at stat.math.ethz.ch 
> [mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Marc 
> Schwartz (via MN)
> Sent: Monday, May 08, 2006 2:50 PM
> To: Nameeta Lobo
> Cc: r-help at stat.math.ethz.ch
> Subject: Re: [R] Non repetitive permutations/combinations of elements
> 
> On Mon, 2006-05-08 at 16:32 -0500, Nameeta Lobo wrote:
> > Hello all,
> > 
> > I am trying to create a matrix of 1s and -1s without any 
> repetitions for a
> > specified number of columns.
> > e.g. 1s and -1s for 3 columns can be done uniquely in 2^3 ways.
> > -1 -1 -1
> > -1 -1  1
> > -1  1 -1
> > -1  1  1
> >  1 -1 -1
> >  1 -1  1
> >  1  1 -1
> >  1  1  1
> > and for 4 columns in 2^4 ways and so on.
> > 
> > I finally used the function combn([0 1],3) that I found at 
> the following link
> > 
> http://www.mathworks.com/matlabcentral/fileexchange/loadFile.d
> o?objectId=7147&objectType=FILE
> > written by Jos van der Geest in Matlab which generated the above.
> > 
> > 
> > How can I do this is R? I have looked at permn and combn in 
> the combinat library
> > and permutations and combinations in the gtools library and 
> I am still confused
> > as to how to get it to work.
> > 
> > Any suggestions will be truly appreciated.
> > 
> > Thank you
> > 
> > Nameeta
> > 
> 
> With just two elements in the source vector, it may be easiest to just
> use expand.grid() and coerce the result to a matrix:
> 
> > as.matrix(expand.grid(rep(list(c(-1, 1)), 3)))
>   Var1 Var2 Var3
> 1   -1   -1   -1
> 2    1   -1   -1
> 3   -1    1   -1
> 4    1    1   -1
> 5   -1   -1    1
> 6    1   -1    1
> 7   -1    1    1
> 8    1    1    1
> 
> Just adjust the final value of '3' to the number of columns that you
> wish to have:
> 
> > as.matrix(expand.grid(rep(list(c(-1, 1)), 4)))
>    Var1 Var2 Var3 Var4
> 1    -1   -1   -1   -1
> 2     1   -1   -1   -1
> 3    -1    1   -1   -1
> 4     1    1   -1   -1
> 5    -1   -1    1   -1
> 6     1   -1    1   -1
> 7    -1    1    1   -1
> 8     1    1    1   -1
> 9    -1   -1   -1    1
> 10    1   -1   -1    1
> 11   -1    1   -1    1
> 12    1    1   -1    1
> 13   -1   -1    1    1
> 14    1   -1    1    1
> 15   -1    1    1    1
> 16    1    1    1    1
> 
> 
> HTH,
> 
> Marc Schwartz
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! 
> http://www.R-project.org/posting-guide.html
>




More information about the R-help mailing list