library(tidyverse)
library(stringr)
Major <- read.csv("https://raw.githubusercontent.com/fivethirtyeight/data/master/college-majors/majors-list.csv",header=TRUE,sep=",")
head(Major)
##   FOD1P                                 Major                  Major_Category
## 1  1100                   GENERAL AGRICULTURE Agriculture & Natural Resources
## 2  1101 AGRICULTURE PRODUCTION AND MANAGEMENT Agriculture & Natural Resources
## 3  1102                AGRICULTURAL ECONOMICS Agriculture & Natural Resources
## 4  1103                       ANIMAL SCIENCES Agriculture & Natural Resources
## 5  1104                          FOOD SCIENCE Agriculture & Natural Resources
## 6  1105            PLANT SCIENCE AND AGRONOMY Agriculture & Natural Resources

Exercise 1

Using str_detect to return any pattern I found that in the majors list we have DATA returned once and STATISTICS returned twice.

Major1 <- Major %>%
  select(Major) %>%
  filter(str_detect(Major,"(DATA|STATISTICS)")) 

Major1
##                                           Major
## 1 MANAGEMENT INFORMATION SYSTEMS AND STATISTICS
## 2      COMPUTER PROGRAMMING AND DATA PROCESSING
## 3               STATISTICS AND DECISION SCIENCE

Exercise 2

Fruits <- c("bell pepper","bilberry","blackberry","blood orange","blueberry","cantaloupe","chili pepper","cloudberry","elderberry","lime","lychee","mulberry","olive","salal berry")
dput(Fruits)
## c("bell pepper", "bilberry", "blackberry", "blood orange", "blueberry", 
## "cantaloupe", "chili pepper", "cloudberry", "elderberry", "lime", 
## "lychee", "mulberry", "olive", "salal berry")

Exercise 3 (14.3.5.1)

Exercise 3a

(.)\1\1 this matches any expressions that have the same letters three times.

Exercise 3b

“(.)(.)\2\1” returns a pair of letters and the pair of letters but reversed ex: peppers

Exercise 3c

(..)\1 finds any expression in which any 2 characters are repeated

Exercise 3d

“(.).\1.\1” returns a string with a character then another character, the same character with any other character,and the original character again. ex: “acada”

Exercise 3e

“(.)(.)(.).*\3\2\1” returns three character followed by zero or more characters with the same three character but reversed. ex: “abccba”

Exercise 4 (14.3.5.2)

Exercise 4a

str_subset(words,"^(.)((.*\\1$)|\\1$)")
##  [1] "america"    "area"       "dad"        "dead"       "depend"    
##  [6] "educate"    "else"       "encourage"  "engine"     "europe"    
## [11] "evidence"   "example"    "excuse"     "exercise"   "expense"   
## [16] "experience" "eye"        "health"     "high"       "knock"     
## [21] "level"      "local"      "nation"     "non"        "rather"    
## [26] "refer"      "remember"   "serious"    "stairs"     "test"      
## [31] "tonight"    "transport"  "treat"      "trust"      "window"    
## [36] "yesterday"

Exercise 4b

str_view("church", "([A-Za-z][A-Za-z]).*\\1")

Exercise 4c

str_view("eleven","([a-z]).*\\1.*\\1.")
LS0tDQp0aXRsZTogIkFzc2lnbm1lbnQgMyBEYXRhIDYwNyINCmF1dGhvcjogIkFsIEhhcXVlIg0KZGF0ZTogIkZlYiAxNywyMDIyYCINCm91dHB1dDogb3BlbmludHJvOjpsYWJfcmVwb3J0DQotLS0NCg0KYGBge3IgbG9hZC1wYWNrYWdlcywgbWVzc2FnZT1GQUxTRX0NCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShzdHJpbmdyKQ0KTWFqb3IgPC0gcmVhZC5jc3YoImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9maXZldGhpcnR5ZWlnaHQvZGF0YS9tYXN0ZXIvY29sbGVnZS1tYWpvcnMvbWFqb3JzLWxpc3QuY3N2IixoZWFkZXI9VFJVRSxzZXA9IiwiKQ0KaGVhZChNYWpvcikNCmBgYA0KDQojIyMgRXhlcmNpc2UgMQ0KDQpVc2luZyBzdHJfZGV0ZWN0IHRvIHJldHVybiBhbnkgcGF0dGVybiBJIGZvdW5kIHRoYXQgaW4gdGhlIG1ham9ycyBsaXN0IHdlIGhhdmUgREFUQSByZXR1cm5lZCBvbmNlIGFuZCBTVEFUSVNUSUNTIHJldHVybmVkIHR3aWNlLiANCg0KYGBge3J9DQoNCk1ham9yMSA8LSBNYWpvciAlPiUNCiAgc2VsZWN0KE1ham9yKSAlPiUNCiAgZmlsdGVyKHN0cl9kZXRlY3QoTWFqb3IsIihEQVRBfFNUQVRJU1RJQ1MpIikpIA0KDQpNYWpvcjENCmBgYA0KDQoNCiMjIyBFeGVyY2lzZSAyDQoNCg0KDQpgYGB7cn0NCkZydWl0cyA8LSBjKCJiZWxsIHBlcHBlciIsImJpbGJlcnJ5IiwiYmxhY2tiZXJyeSIsImJsb29kIG9yYW5nZSIsImJsdWViZXJyeSIsImNhbnRhbG91cGUiLCJjaGlsaSBwZXBwZXIiLCJjbG91ZGJlcnJ5IiwiZWxkZXJiZXJyeSIsImxpbWUiLCJseWNoZWUiLCJtdWxiZXJyeSIsIm9saXZlIiwic2FsYWwgYmVycnkiKQ0KZHB1dChGcnVpdHMpDQpgYGANCg0KDQojIyMgRXhlcmNpc2UgMyAoMTQuMy41LjEpDQoNCiMjIyMgRXhlcmNpc2UgM2ENCg0KICAoLilcMVwxIHRoaXMgbWF0Y2hlcyBhbnkgZXhwcmVzc2lvbnMgdGhhdCBoYXZlIHRoZSBzYW1lIGxldHRlcnMgdGhyZWUgdGltZXMuIA0KDQoNCiMjIyMgRXhlcmNpc2UgM2INCg0KICAiKC4pKC4pXFwyXFwxIiByZXR1cm5zIGEgcGFpciBvZiBsZXR0ZXJzIGFuZCB0aGUgcGFpciBvZiBsZXR0ZXJzIGJ1dCByZXZlcnNlZCBleDogcGVwcGVycw0KDQojIyMjIEV4ZXJjaXNlIDNjDQoNCiAgKC4uKVwxIGZpbmRzIGFueSBleHByZXNzaW9uIGluIHdoaWNoIGFueSAyIGNoYXJhY3RlcnMgYXJlIHJlcGVhdGVkDQogIA0KIyMjIyBFeGVyY2lzZSAzZA0KICANCiAgIiguKS5cXDEuXFwxIiByZXR1cm5zIGEgc3RyaW5nIHdpdGggYSBjaGFyYWN0ZXIgdGhlbiBhbm90aGVyIGNoYXJhY3RlciwgdGhlIHNhbWUgY2hhcmFjdGVyIHdpdGggYW55IG90aGVyIGNoYXJhY3RlcixhbmQgdGhlIG9yaWdpbmFsIGNoYXJhY3RlciBhZ2Fpbi4gZXg6ICJhY2FkYSIgDQogIA0KIyMjIyBFeGVyY2lzZSAzZQ0KDQogICIoLikoLikoLikuKlxcM1xcMlxcMSIgcmV0dXJucyB0aHJlZSBjaGFyYWN0ZXIgZm9sbG93ZWQgYnkgemVybyBvciBtb3JlIGNoYXJhY3RlcnMgd2l0aCB0aGUgc2FtZSB0aHJlZSBjaGFyYWN0ZXIgYnV0IHJldmVyc2VkLiBleDogImFiY2NiYSINCg0KDQojIyMgRXhlcmNpc2UgNCAoMTQuMy41LjIpDQoNCg0KIyMjIyBFeGVyY2lzZSA0YQ0KDQpgYGB7cn0NCg0Kc3RyX3N1YnNldCh3b3JkcywiXiguKSgoLipcXDEkKXxcXDEkKSIpDQoNCmBgYA0KDQoNCiMjIyMgRXhlcmNpc2UgNGINCg0KDQpgYGB7ciBwbG90LXByb3AtYm95cy1wcmVzZW50fQ0Kc3RyX3ZpZXcoImNodXJjaCIsICIoW0EtWmEtel1bQS1aYS16XSkuKlxcMSIpDQpgYGANCg0KIyMjIyBFeGVyY2lzZSA0Yw0KDQpgYGB7cn0NCnN0cl92aWV3KCJlbGV2ZW4iLCIoW2Etel0pLipcXDEuKlxcMS4iKQ0KYGBgDQoNCg0K