Skip to content

Instantly share code, notes, and snippets.

@cdesante
Created December 17, 2012 16:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cdesante/4319413 to your computer and use it in GitHub Desktop.
Save cdesante/4319413 to your computer and use it in GitHub Desktop.
Extracting Numeric Values from Words
My.Words <- read.csv("http://www.oberlin.edu/faculty/cdesante/assets/downloads/Randwords.csv")
My.Words$RANDOM.WORDS <- as.character(My.Words$RANDOM.WORDS)
#Step 1: Split Character Vectors into Sub-strings:
strsplit(My.Words$RANDOM.WORDS, "")
Split.List <- strsplit(My.Words$RANDOM.WORDS, "")
#Step 2: Assign a numeric value to each of the 26 letters:
LETTERS
rank(LETTERS)
Letter.Values<- rank(LETTERS)
names(Letter.Values) <- LETTERS
Letter.Values
#Step 3: Extract the value of each word by summing the letters' values
Word.Sums <- unlist(lapply(Split.List, function(Word){sum(Letter.Values[Word])}))
Word.Sums
#Step 4: Which words have the highest and lowest values?
My.Words$RANDOM.WORDS[Word.Sums==max(Word.Sums)]
My.Words$RANDOM.WORDS[Word.Sums==min(Word.Sums)]
@vkryukov
Copy link

Steps 2 and 3 look very complicated. You can use the following one-liner

Word.Sums <- sapply(Split.List, function(word) sum(match(word, LETTERS)))

@vkryukov
Copy link

For step 4, you could use which.min and which.max

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment