Exercise #1
There are 3 majors listed in this dataset that contain ‘DATA’ or ‘STATISTICS’.
These majors are:
* MANAGEMENT INFORMATION SYSTEMS AND STATISTICS
* COMPUTER PROGRAMMING AND DATA PROCESSING
* STATISTICS AND DECISION SCIENCE
urlfile=("https://raw.githubusercontent.com/fivethirtyeight/data/master/college-majors/majors-list.csv")
majors <- read.csv(urlfile)
Code Option 1
data_stat_majors <- grep("DATA|STATISTICS",majors$Major,value=TRUE)
data_stat_majors
## [1] "MANAGEMENT INFORMATION SYSTEMS AND STATISTICS"
## [2] "COMPUTER PROGRAMMING AND DATA PROCESSING"
## [3] "STATISTICS AND DECISION SCIENCE"
Code Option 2
data_stat_majors <- str_detect(majors$Major,"DATA|STATISTICS")
majors$Major[data_stat_majors]
## [1] "MANAGEMENT INFORMATION SYSTEMS AND STATISTICS"
## [2] "COMPUTER PROGRAMMING AND DATA PROCESSING"
## [3] "STATISTICS AND DECISION SCIENCE"
Exercise #2
This is a trick question. The output of c() is a vector coerced to a common type; in the case provided, the input are strings, therefore the output will be a a character vector. The code we see above is how a character vector appears in the R console as output, where each string represents an element of the character vector. The numbering of the output indicates the index of the starting element - so 4 elements on first row, fifth element will start on 2nd row [5], 9th element starts on 3rd row [9], etc.
If you wanted to control the number of elements presented on each row, you can use cat() and specify argument fill to numeric value of print width
fruits_list<-cat(c("bell pepper", "bilberry", "blackberry", "blood orange", "blueberry", "cantaloupe", "chili pepper", "cloudberry", "elderberry", "lime", "lychee", "mulberry", "olive", "salal berry"),fill=45)
## bell pepper bilberry blackberry blood orange
## blueberry cantaloupe chili pepper cloudberry
## elderberry lime lychee mulberry olive
## salal berry
Exercise #3
Note: escape characters were used in the rmarkdown of this assigment to escape special meaning for formatting.
Answers for pattern matching expressions can be read/referenced from how they appear in the html output on rpubs.
(.)\1\1 will match any string containing a character repeated 3x sequentially
“(.)(.)\\2\\1” will match a very short palindrome where 2nd character will repeat sequentially and be followed by repeat of 1st character (ex: abba)
(..)\1 will match sequentially repeating character pair (ex:chch)
“(.).\\1.\\1” will match strings that are length of 5 where a character repeats at 1st, 3rd, and 5th index (ex: bebab)
“(.)(.)(.).*\\3\\2\\1” will match strings that are at least 6 characters long where first 3 characters of string are also the last 3 characters in reverse order (ex: abcdcba)
Exercise #4
Note: escape characters were used in the rmarkdown of this assigment to escape special meaning for formatting.
Answers for pattern matching expressions can be read/referenced from how they appear in the html output on rpubs.
Start and end with the same character: ^(.).*\1$
Contain a repeated pair of letters (e.g. “church” contains “ch” repeated twice): (..).*\1
Contain one letter repeated in at least three places (e.g. “eleven” contains three “e”s.): (.).*\1.*\1
LS0tDQp0aXRsZTogIkFzc2lnbm1lbnQgMyINCmF1dGhvcjogIkNhc3NpZSBCb3lsYW4iDQpkYXRlOiAiYHIgU3lzLkRhdGUoKWAiDQpvdXRwdXQ6IG9wZW5pbnRybzo6bGFiX3JlcG9ydA0KLS0tDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFKQ0KDQpsaWJyYXJ5KHN0cmluZ3IpDQoNCmBgYA0KDQojIyBFeGVyY2lzZSAjMQ0KVGhlcmUgYXJlIDMgbWFqb3JzIGxpc3RlZCBpbiB0aGlzIGRhdGFzZXQgdGhhdCBjb250YWluICdEQVRBJyBvciAnU1RBVElTVElDUycuICANCiAgDQpUaGVzZSBtYWpvcnMgYXJlOiAgDQoqIE1BTkFHRU1FTlQgSU5GT1JNQVRJT04gU1lTVEVNUyBBTkQgU1RBVElTVElDUyAgDQoqIENPTVBVVEVSIFBST0dSQU1NSU5HIEFORCBEQVRBIFBST0NFU1NJTkcgIA0KKiBTVEFUSVNUSUNTIEFORCBERUNJU0lPTiBTQ0lFTkNFICANCmBgYHtyIGltcG9ydCBjb2xsZWdlIG1ham9yc30NCg0KdXJsZmlsZT0oImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9maXZldGhpcnR5ZWlnaHQvZGF0YS9tYXN0ZXIvY29sbGVnZS1tYWpvcnMvbWFqb3JzLWxpc3QuY3N2IikNCg0KbWFqb3JzIDwtIHJlYWQuY3N2KHVybGZpbGUpDQpgYGANCiMjIyMgQ29kZSBPcHRpb24gMQ0KYGBge3J9DQpkYXRhX3N0YXRfbWFqb3JzIDwtIGdyZXAoIkRBVEF8U1RBVElTVElDUyIsbWFqb3JzJE1ham9yLHZhbHVlPVRSVUUpDQpkYXRhX3N0YXRfbWFqb3JzDQpgYGANCiMjIyMgQ29kZSBPcHRpb24gMg0KYGBge3J9DQpkYXRhX3N0YXRfbWFqb3JzIDwtIHN0cl9kZXRlY3QobWFqb3JzJE1ham9yLCJEQVRBfFNUQVRJU1RJQ1MiKQ0KbWFqb3JzJE1ham9yW2RhdGFfc3RhdF9tYWpvcnNdDQpgYGANCg0KIyMgRXhlcmNpc2UgIzIgIA0KDQpUaGlzIGlzIGEgdHJpY2sgcXVlc3Rpb24uICBUaGUgb3V0cHV0IG9mIGMoKSBpcyBhIHZlY3RvciBjb2VyY2VkIHRvIGEgY29tbW9uIHR5cGU7IGluIHRoZSBjYXNlIHByb3ZpZGVkLCB0aGUgaW5wdXQgYXJlIHN0cmluZ3MsIHRoZXJlZm9yZSB0aGUgb3V0cHV0IHdpbGwgYmUgYSBhIGNoYXJhY3RlciB2ZWN0b3IuICBUaGUgY29kZSB3ZSBzZWUgYWJvdmUgaXMgaG93IGEgY2hhcmFjdGVyIHZlY3RvciBhcHBlYXJzIGluIHRoZSBSIGNvbnNvbGUgYXMgb3V0cHV0LCB3aGVyZSBlYWNoIHN0cmluZyByZXByZXNlbnRzIGFuIGVsZW1lbnQgb2YgdGhlIGNoYXJhY3RlciB2ZWN0b3IuICBUaGUgbnVtYmVyaW5nIG9mIHRoZSBvdXRwdXQgaW5kaWNhdGVzIHRoZSBpbmRleCBvZiB0aGUgc3RhcnRpbmcgZWxlbWVudCAtIHNvIDQgZWxlbWVudHMgb24gZmlyc3Qgcm93LCBmaWZ0aCBlbGVtZW50IHdpbGwgc3RhcnQgb24gMm5kIHJvdyBbNV0sIDl0aCBlbGVtZW50IHN0YXJ0cyBvbiAzcmQgcm93IFs5XSwgZXRjLg0KDQpJZiB5b3Ugd2FudGVkIHRvIGNvbnRyb2wgdGhlIG51bWJlciBvZiBlbGVtZW50cyBwcmVzZW50ZWQgb24gZWFjaCByb3csIHlvdSBjYW4gdXNlIGNhdCgpIGFuZCBzcGVjaWZ5IGFyZ3VtZW50IGZpbGwgdG8gbnVtZXJpYyB2YWx1ZSBvZiBwcmludCB3aWR0aA0KYGBge3J9DQpmcnVpdHNfbGlzdDwtY2F0KGMoImJlbGwgcGVwcGVyIiwgImJpbGJlcnJ5IiwgImJsYWNrYmVycnkiLCAiYmxvb2Qgb3JhbmdlIiwgImJsdWViZXJyeSIsICJjYW50YWxvdXBlIiwgImNoaWxpIHBlcHBlciIsICJjbG91ZGJlcnJ5IiwgImVsZGVyYmVycnkiLCAibGltZSIsICJseWNoZWUiLCAibXVsYmVycnkiLCAib2xpdmUiLCAic2FsYWwgYmVycnkiKSxmaWxsPTQ1KQ0KYGBgDQoNCiMjIEV4ZXJjaXNlICMzIA0KPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+Tm90ZTogZXNjYXBlIGNoYXJhY3RlcnMgd2VyZSB1c2VkIGluIHRoZSBybWFya2Rvd24gb2YgdGhpcyBhc3NpZ21lbnQgdG8gZXNjYXBlIHNwZWNpYWwgbWVhbmluZyBmb3IgZm9ybWF0dGluZy4gIA0KQW5zd2VycyBmb3IgcGF0dGVybiBtYXRjaGluZyBleHByZXNzaW9ucyBjYW4gYmUgcmVhZC9yZWZlcmVuY2VkIGZyb20gaG93IHRoZXkgYXBwZWFyIGluIHRoZSBodG1sIG91dHB1dCBvbiBycHVicy48L3NwYW4+DQoNCjEuICoqKC4pXDFcMSoqIHdpbGwgbWF0Y2ggYW55IHN0cmluZyBjb250YWluaW5nIGEgY2hhcmFjdGVyIHJlcGVhdGVkIDN4IHNlcXVlbnRpYWxseQ0KDQoyLiAqKiIoLikoLilcXFwyXFxcMSIqKiB3aWxsIG1hdGNoIGEgdmVyeSBzaG9ydCBwYWxpbmRyb21lIHdoZXJlIDJuZCBjaGFyYWN0ZXIgd2lsbCByZXBlYXQgc2VxdWVudGlhbGx5IGFuZCBiZSBmb2xsb3dlZCBieSByZXBlYXQgb2YgMXN0IGNoYXJhY3RlciAoZXg6IGFiYmEpDQoNCjMuICoqKC4uKVwxKiogd2lsbCBtYXRjaCBzZXF1ZW50aWFsbHkgcmVwZWF0aW5nIGNoYXJhY3RlciBwYWlyIChleDpjaGNoKQ0KDQo0LiAqKiIoLikuXFxcMS5cXFwxIioqIHdpbGwgbWF0Y2ggc3RyaW5ncyB0aGF0IGFyZSBsZW5ndGggb2YgNSB3aGVyZSBhIGNoYXJhY3RlciByZXBlYXRzIGF0IDFzdCwgM3JkLCBhbmQgNXRoIGluZGV4IChleDogYmViYWIpDQoNCjUuIF9fIiguKSguKSguKS5cKlxcXDNcXFwyXFxcMSJfXyB3aWxsIG1hdGNoIHN0cmluZ3MgdGhhdCBhcmUgYXQgbGVhc3QgNiBjaGFyYWN0ZXJzIGxvbmcgd2hlcmUgZmlyc3QgMyBjaGFyYWN0ZXJzIG9mIHN0cmluZyBhcmUgYWxzbyB0aGUgbGFzdCAzIGNoYXJhY3RlcnMgaW4gcmV2ZXJzZSBvcmRlciAoZXg6IGFiY2RjYmEpDQoNCiMjIEV4ZXJjaXNlICM0ICANCjxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPk5vdGU6IGVzY2FwZSBjaGFyYWN0ZXJzIHdlcmUgdXNlZCBpbiB0aGUgcm1hcmtkb3duIG9mIHRoaXMgYXNzaWdtZW50IHRvIGVzY2FwZSBzcGVjaWFsIG1lYW5pbmcgZm9yIGZvcm1hdHRpbmcuICANCkFuc3dlcnMgZm9yIHBhdHRlcm4gbWF0Y2hpbmcgZXhwcmVzc2lvbnMgY2FuIGJlIHJlYWQvcmVmZXJlbmNlZCBmcm9tIGhvdyB0aGV5IGFwcGVhciBpbiB0aGUgaHRtbCBvdXRwdXQgb24gcnB1YnMuPC9zcGFuPg0KDQoxLiBTdGFydCBhbmQgZW5kIHdpdGggdGhlIHNhbWUgY2hhcmFjdGVyOiAgIF9fXiguKVwuXCpcMSRfXw0KDQoyLiBDb250YWluIGEgcmVwZWF0ZWQgcGFpciBvZiBsZXR0ZXJzIChlLmcuICJjaHVyY2giIGNvbnRhaW5zICJjaCIgcmVwZWF0ZWQgdHdpY2UpOiAgIF9fKC4uKS5cKlwxX18NCg0KMy4gQ29udGFpbiBvbmUgbGV0dGVyIHJlcGVhdGVkIGluIGF0IGxlYXN0IHRocmVlIHBsYWNlcyAoZS5nLiAiZWxldmVuIiBjb250YWlucyB0aHJlZSAiZSJzLik6ICAgX18oLikuXCpcMS5cKlwxX18=