code: public Frame reorderColumns(Frame f) {
        if ((_interactionsOnly == null) || (f == null))
          return f;
        Vec[] interOnlyVecs = f.vecs(_interactionsOnly);
        f.remove(_interactionsOnly);
        for (int i = 0; i < _interactionsOnly.length; i++) {
          if (isUsed(_interactionsOnly[i])) {
            f.add(_interactionsOnly[i], interOnlyVecs[i]);
          } else if (! isIgnored(_interactionsOnly[i])) {
            Log.warn("Column '" + _interactionsOnly[i] + "' was marked to be used for interactions only " +
                    "but it is not actually required in any interaction.");
          }
        }
        return f;
      }
docs: Reorders columns of a Frame so that columns that only used to make interactions
  are at the end of the Frame. Only Vecs that will actually be used are kept in the frame.
  @param f frame to adjust
  @return reordered frame