Ever think that the names we give things distract from how similar they are? (Maybe this is why the buildings at MIT are numbered, not named.)

Take sports. How many sports are some variation on hitting a stick with a ball? Or hitting a ball with a ball? Or putting a ball into a receptacle?

But we call these things “hockey”, “golf”, “croquet”, “bocce”, “basketball”, …

If you look at what things are, instead of what they’re called, and identify the dimensions along which they vary, you can construct the “space” in which they exist.

For example, I’ve classified ball sports as varying by,

  • Implement — what you use to manipulate the ball: hands, feet, or some appropriate tool,
  • Receptacle — whether the ball receptacle is close to the size of the ball (small), or much bigger than the ball (large),
  • Players — team or individual,
  • Activity — do the parties take turns (sequential), or play simultaneously.

These examples hint at a full “space” — all the possible combinations of values the dimensions can take.

Constructing the full space manually would be tedious. The programming language R is a great tool for automating this sort of work. It has a built-in function called expand.grid for exactly this purpose.

First, define the dimensions. R calls a dimension that can assume one of a few discrete values, a factor. Feeding these dimensions into expand.grid gives the full space.

Is there a sport where teams take turns kicking a ball into a small hole? Maybe not. I suspect that much of the fun of team sports is in their real-time team coordination, which disappears in what I’m calling “sequential” sports. That suggests that the whole “sequential, team, …” sub-space is a bad one to invent a sport in. The R command subset can eliminate this sub-space.

I use this technique to generate new ideas in a systematic way.