combinated

Purpose

Writes combinations of N things taken K at a time to a GAUSS dataset.

Format

ret = combinated(fname, vnames, N, K)
Parameters:
  • fname (string) – file name.
  • vname (1x1 or Kx1 string array) – names of columns in dataset. If 1x1 string, names will have column number appended. If null string, names will be X1, X2, ...
  • N (scalar) – Total number of things in population.
  • K (scalar) – Number of things drawn each time.
Returns:

ret (scalar) –

if dataset was successfully written, ret = number of rows written to dataset. Otherwise, one of the following:

0 file already exists.
-1 dataset couldn’t be created.
-n the (n-1)th write to the dataset failed.

Examples

// Note: The '$|' operator vertically concatenates strings
vnames = "Jim" $| "Harry" $| "Susan" $| "Wendy";

/*
** Create a dataset file named 'couples.dat', containing all
** combinations of the names in 'vnames' taken 2 at a time
*/
k = 2;
m = combinated("couples.dat", "Spouse 1" $| "Spouse 2", rows(vnames),k);

print m "rows were written to the dataset";

After the above code,

6.0000 rows were written to the dataset

Continuing from the code above:

// Open the file written above
fh = dataOpen("couples.dat", "read");

// Read in m=6 rows of the dataset into 'y'
y = readr(fh, m);
print "y = " y;

/*
** Get the variable names from the dataset and assign them
** to 'names'
*/
names = getnamef(fh);
fh = close(fh);
print names';

for i(1, rows(y),1);
  print vnames[y[i, .]]';
endfor;

will produce the following output:

y =
    1.0000000        2.0000000
    1.0000000        3.0000000
    1.0000000        4.0000000
    2.0000000        3.0000000
    2.0000000        4.0000000
    3.0000000        4.0000000

    Spouse 1         Spouse 2
         Jim            Harry
         Jim            Susan
         Jim            Wendy
       Harry            Susan
       Harry            Wendy
       Susan            Wendy

The first row of the output, Jim Harry, is the first and second element of vnames, because the first row of y is equal to 1 2. The fourth row of the output is Harry Susan, because the fourth row of y is 2 3 and Harry is the second element of vnames while Susan is the third element.

Remarks

The rows of the dataset in fname contain sequences of the integers from 1 to N in combinations taken K at a time.

See also

Functions combinate(), numCombinations()