Skip to content

scumdogsteev/phonenumber

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
R
 
 
 
 
man
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

phonenumber

R-CMD-checkCRAN_Status_Badge Coverage Status RStudio CRAN mirror downloads

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.

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

Installation

  • phonenumber is available on CRAN and can be installed accordingly:
install.packages("phonenumber")
library(phonenumber)
  • You can also install phonenumber from GitHub using the devtools package:
install.packages("devtools")
library(devtools)
install_github("scumdogsteev/phonenumber")
library(phonenumber)

Usage

The package consists of two functions:

  1. letterToNumber - converts letters in a string to numbers
  2. numberToLetter - converts numbers in a string to letters

Both functions convert non-alphanumeric characters to dash (-) and perform no conversion on their respective base character type (i.e., letterToNumber leaves letters as is and numberToLetter leaves numbers as is).

Examples

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"

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"