[R] create matrices with constraint

John McKown
Fri, 12 Dec 2014 19:45:37 -0000

On Fri, Dec 12, 2014 at 12:17 PM, peter dalgaard <pdalgd at gmail.com>
wrote:

>
> > On 12 Dec 2014, at 18:00 , Kathryn Lord <kathryn.lord2000 at
gmail.com>
> wrote:
> >
> > Dear all,
> >
> > Suppose that I have natural numbers 1 through 28.
> >
> > Based on these numbers, choose 4 numbers 7 times without replacement
and
> > make a 4 by 7 matrix, for example,
> >
> >> a1
> >
> ??
>    [,1] [,2] [,3] [,4] [,5] [,6] [,7]
> > [1,]    1    5    9   13   17   21   25
> > [2,]    2    6   10   14   18   22   26
> > [3,]    3    7   11   15   19   23   27
> > [4,]    4    8   12   16   20   24   28
> >
> > and again create another 4 * 7 matrix, say a2, in the same way;
however,
> > every element of each column in a2 does not exist in any column of a1
> like
> > this, e.g.
> >
> >> a2
> >     [,1] [,2] [,3] [,4] [,5] [,6] [,7]
> > [1,]    1    2    3    4    5    6    7
> > [2,]    8    9   10   11   12   13   14
> > [3,]   15   16   17   18   19   20   21
> > [4,]   22   23   24   25   26   27   28
> >>
> >
>
> No comprendo... In which sense does e.g. "1" in the first column
of a2 not
> exist in any column of a1????
>

?I was confused about that too. Perhaps what she means is that each column
in the every "a" matrix has at least one value?

?which does not exist in any column of any other "a" matrix. So that
the
set of values in a[,?] for a given version does not exist as a set of
values in any other column (ignoring order) of any other version of
"a". So
a1[,1] is c(1,2,3,4) which means that no other a?[,?] contains _all_ of
those. It _may_ contain a proper subset, but at least one value in the set
must differ. But I'm not sure that I was any clearer.

Hum. Consider the set of all possible unique 4 value vectors in which the
values in the vectors are taken, without replacement, from the numbers 1
through 28. This is a mathematical concept called "combination". In
this
case, there are 35 such: 7!/(4!*3!).
Combine those vectors in groups of 7
?, each group being a separate column,?
in such a way that each resulting matrix contains no duplicate numbers,
which also ensure
?s?
that each resulting matrix does contain all of the values 1 through 28.
Note that the vector c(1,2,3,4) and c(2,1,4,3) are considered identical
? because, in a combination, order does not matter?
. So a matrix which has a column with c(1,2,3,4) stops any other matrix
from having a column with the values c(2,1,4,3).
?You can also note that two matrices would be consider "identical" if
the
only difference is the arrangement of the column. For example:

?

?         ?
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
?   ?
 [1,]    1    5    9   13   17   21   25
?   ?
 [2,]    2    6   10   14   18   22   26
?   ?
 [3,]    3    7   11   15   19   23   27
?   ?
 [4,]    4    8   12   16   20   24   28

?
is really the same as (exchanging [,4] and [,1]):

?
??
??

??

?     ?
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
?   ?
 [1,]
?13
    5    9
? 1?
   17   21   25
?   ?
 [2,]
?14?
    6   10
? 2?
   18   22   26
?   ?
 [3,]
?15?
    7   11
? 3?
   19   23   27
?   ?
 [4,]
?16?
    8   12
? 4?
   20   24   28


as is
? (exchanging [3,7] and [4,7])?

?  ??  ?     ?[,1] [,2] [,3] [,4] [,5] [,6] [,7]
?   ? [1,]   ?13    5    9   ? 1?   17   21   25
?   ? [2,]   ?14?    6   10   ? 2?   18   22   26
?   ? [3,]   ?15?    7   11   ? 3?   19   23   2
?8?
?   ? [4,]   ?16?    8   12   ? 4?   20   24   2
?7?



I think this is what the OP was getting at.

I can't think of a way, off hand, to generate all such "a"
matrices. I
might be able to do the first part: creating all unique 4 value vectors.
But then combining the vectors together to make the matrices is not clear
to me.
?

>
>
> --
> Peter Dalgaard, Professor,
> Center for Statistics, Copenhagen Business School
> Solbjerg Plads 3, 2000 Frederiksberg, Denmark
> Phone: (+45)38153501
> Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com
>
> ______________________________________________
> R-help at 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.