[R] Non repetitive permutations/combinations of elements
Marc Schwartz (via MN)
mschwartz at mn.rr.com
Mon May 8 23:50:27 CEST 2006
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.do?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
More information about the R-help
mailing list