Introduction to phonenumber

This document describes the usage of the two functions in the phonenumber package. Note that, though this package’s functions convert back and forth from numbers to English letters as on a telephone’s keypad, the length of the character string need not conform to any standard length telephone number.

Background

When I recently posted some of my Turbo Pascal Stuff, I found an incomplete program that was supposed to do this. I was active on BBSes and, though I don’t recall the reason, I wanted a way to determine the possible words spelled by the BBS phone numbers (and/or how to determine what phone numbers correspond to words/phrases). I never got around to finishing the second part (numbers to letters) in Turbo Pascal, though.

I decided to create this functionality in R for three reasons:

  1. to see if I could write the functions
  2. to learn to publish a package to CRAN
  3. to serve as a possible pedagogical example for others as it involves working with lists, splitting strings, and the expand.grid function.

phonenumber’s functions

  • letterToNumber
  • numberToLetter

Telephone keypad

For purposes of this package, the mapping of numbers to letters on a telephone’s keypad are as follows:

  • Default behavior - if parameter qz is omitted (or has a value other than 0):
    • 2 corresponds to A, B, C
    • 3 corresponds to D, E, F
    • 4 corresponds to G, H, I
    • 5 corresponds to J, K, L
    • 6 corresponds to M, N, O
    • 7 corresponds to P, Q, R, S
    • 8 corresponds to T, U, V
    • 9 corresponds to W, X, Y, Z
    • 0 and 1 have no corresponding letters
  • Alternate behavior - if parameter qz = 0:
    • 2 corresponds to A, B, C
    • 3 corresponds to D, E, F
    • 4 corresponds to G, H, I
    • 5 corresponds to J, K, L
    • 6 corresponds to M, N, O
    • 7 corresponds to P, R, S
    • 8 corresponds to T, U, V
    • 9 corresponds to W, X, Y
    • 0 corresponds to Q, Z
    • 1 has no corresponding letters

letterToNumber

letterToNumber converts a string containing letters into the corresponding numbers on a telephone’s keypad. For example, if the user wants to know what telephone number corresponds to “Texas:”

string <- "Texas"
letterToNumber(string)
## [1] "83927"

The function is not limited to letters. Any numeric characters are returned as is and any non-alphanumeric characters (including spaces) are converted to dashes (-):

string <- "Texas is #1"
letterToNumber(string)
## [1] "83927-47--1"

Strings need not be limited to any specific format and all numbers are returned as is:

letterToNumber("Jenny's number is 867-5309")
## [1] "53669-7-686237-47-867-5309"

numberToLetter

numberToLetter converts a string containing numbers into the corresponding letters on a telephone’s keypad. For example, if the user wants to know what possible character strings could be spelled by a sequence of numbers (e.g., 22):

string <- "22"
numberToLetter(string)
## [1] "AA" "AB" "AC" "BA" "BB" "BC" "CA" "CB" "CC"

The function is not limited to numbers. Any alphabetic characters are returned as is and any non-alphanumeric characters (including spaces) are converted to dashes (-) and 1 and 0 are returned as is:

string <- "806!"
numberToLetter(string)
## [1] "T0M-" "T0N-" "T0O-" "U0M-" "U0N-" "U0O-" "V0M-" "V0N-" "V0O-"