Efforts at using purrr
and understanding lists.
This note uses the purrr
package and listviewer
to help understand the structure of and extract data from the Fingertips API. The purrr
package helps to unpack and operate on lists. listviewer
helps to visualise and understand them.
Install packages
if(!require(repurrrsive))install_github("jennybc/repurrrsive")
Loading required package: repurrrsive
there is no package called ‘repurrrsive’Downloading GitHub repo jennybc/repurrrsive@master
from URL https://api.github.com/repos/jennybc/repurrrsive/zipball/master
Installing repurrrsive
'/Library/Frameworks/R.framework/Resources/bin/R' --no-site-file --no-environ --no-save \
--no-restore --quiet CMD INSTALL \
'/private/var/folders/gs/3y755_ds3r5gw5n1l_bcnxfw0000gn/T/RtmpDY6tB2/devtools7fb5ee01f1/jennybc-repurrrsive-eb4504c' \
--library='/Users/julianflowers/Library/R/3.3/library' --install-tests
* installing *source* package ‘repurrrsive’ ...
** R
** data
*** moving datasets to lazyload DB
** inst
** tests
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (repurrrsive)
View it with listview
The wesanderson
package is a list of colour palettes used in Wes Anderson’s movies.
str(wesanderson)
List of 15
$ GrandBudapest : chr [1:4] "#F1BB7B" "#FD6467" "#5B1A18" "#D67236"
$ Moonrise1 : chr [1:4] "#F3DF6C" "#CEAB07" "#D5D5D3" "#24281A"
$ Royal1 : chr [1:4] "#899DA4" "#C93312" "#FAEFD1" "#DC863B"
$ Moonrise2 : chr [1:4] "#798E87" "#C27D38" "#CCC591" "#29211F"
$ Cavalcanti : chr [1:5] "#D8B70A" "#02401B" "#A2A475" "#81A88D" ...
$ Royal2 : chr [1:5] "#9A8822" "#F5CDB4" "#F8AFA8" "#FDDDA0" ...
$ GrandBudapest2: chr [1:4] "#E6A0C4" "#C6CDF7" "#D8A499" "#7294D4"
$ Moonrise3 : chr [1:5] "#85D4E3" "#F4B5BD" "#9C964A" "#CDC08C" ...
$ Chevalier : chr [1:4] "#446455" "#FDD262" "#D3DDDC" "#C7B19C"
$ Zissou : chr [1:5] "#3B9AB2" "#78B7C5" "#EBCC2A" "#E1AF00" ...
$ FantasticFox : chr [1:5] "#DD8D29" "#E2D200" "#46ACC8" "#E58601" ...
$ Darjeeling : chr [1:5] "#FF0000" "#00A08A" "#F2AD00" "#F98400" ...
$ Rushmore : chr [1:5] "#E1BD6D" "#EABE94" "#0B775E" "#35274A" ...
$ BottleRocket : chr [1:7] "#A42820" "#5F5647" "#9B110E" "#3F5151" ...
$ Darjeeling2 : chr [1:5] "#ECCBAE" "#046C9A" "#D69C4E" "#ABDDDE" ...
We can see for example the 5 colours in Cavalcanti.
Extracting all the colours for Wes Anderson movies
Trying list viewer with the Fingertips API
- Starting simple with the area types
This tells us that the result is a JSON object. There are 51 area types. We can search the view and easily obtain the ID for any given area so:
- areatype 6 is ‘GO Region’,
- areatype 19 is’CCG’ and so on.
Using search terms in the Fingersips API.
Using this for a search term retrieves a list of indicator IDs for area types. So for the term ‘obesity’:
Extracting indicator IDs and area types to a data frame
Using the purrr::map_df
function and magrittr::extract
We can see that 59 indicators for areatype 102 (Counties and Unitary Authorities), 46 for 101 (LAD and UA), 41 for GO Regions and 12 for CCGs.
LS0tCnRpdGxlOiAiRmluZ2VydGlwcyBBUEkgLSByZXRyaWV2aW5nIHJlc3Vsc3QgYmFzZWQgb24gc2VhcmNoIHRlcm1zIgpvdXRwdXQ6IAogIGh0bWxfbm90ZWJvb2s6IAogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMKICAgIHRvYzogeWVzCiAgICB0b2NfZmxvYXQ6IHllcwotLS0KCiMgRWZmb3J0cyBhdCB1c2luZyBgcHVycnJgIGFuZCB1bmRlcnN0YW5kaW5nIGxpc3RzLgoKVGhpcyBub3RlIHVzZXMgdGhlIGBwdXJycmAgcGFja2FnZSBhbmQgYGxpc3R2aWV3ZXJgIHRvIGhlbHAgdW5kZXJzdGFuZCB0aGUgc3RydWN0dXJlIG9mIGFuZCBleHRyYWN0IGRhdGEgZnJvbSB0aGUgRmluZ2VydGlwcyBBUEkuIFRoZSBgcHVycnJgIHBhY2thZ2UgaGVscHMgdG8gdW5wYWNrIGFuZCBvcGVyYXRlIG9uIGxpc3RzLiBgbGlzdHZpZXdlcmAgaGVscHMgdG8gdmlzdWFsaXNlIGFuZCB1bmRlcnN0YW5kIHRoZW0uCgojIyBJbnN0YWxsIHBhY2thZ2VzCgpgYGB7cn0KaWYoIXJlcXVpcmUocHVycnIpKWluc3RhbGwucGFja2FnZXMoInB1cnJyIikKbGlicmFyeShwdXJycikKCmlmKCFyZXF1aXJlKGxpc3R2aWV3ZXIpKWluc3RhbGwucGFja2FnZXMoImxpc3R2aWV3ZXIiKQpsaWJyYXJ5KGxpc3R2aWV3ZXIpCgpsaWJyYXJ5KGRldnRvb2xzKQoKaWYoIXJlcXVpcmUocmVwdXJycnNpdmUpKWluc3RhbGxfZ2l0aHViKCJqZW5ueWJjL3JlcHVycnJzaXZlIikKbGlicmFyeShyZXB1cnJyc2l2ZSkKCmBgYAoKIyMgVmlldyBpdCB3aXRoIGxpc3R2aWV3CgpUaGUgYHdlc2FuZGVyc29uYCBwYWNrYWdlIGlzIGEgbGlzdCBvZiBjb2xvdXIgcGFsZXR0ZXMgdXNlZCBpbiBXZXMgQW5kZXJzb24ncyBtb3ZpZXMuCgpgYGB7cn0Kc3RyKHdlc2FuZGVyc29uKSAjIyBhIGxpc3Qgb2YgY29sb3VyIHBhbGV0dGVzCmBgYAoKCgpgYGB7cn0KbGlzdHZpZXdlcjo6anNvbmVkaXQod2VzYW5kZXJzb24pCmBgYAoKV2UgY2FuIHNlZSBmb3IgZXhhbXBsZSB0aGUgNSBjb2xvdXJzIGluIENhdmFsY2FudGkuCgojIyBFeHRyYWN0aW5nIGFsbCB0aGUgY29sb3VycyBmb3IgV2VzIEFuZGVyc29uIG1vdmllcwoKYGBge3J9CgpsaWJyYXJ5KG1hZ3JpdHRyKQp3IDwtIGRhdGEuZnJhbWUoKQoKd2VzYW5kZXJzb25bWzNdXQp6IDwtICBtYXBfZGYod2VzYW5kZXJzb24sIGV4dHJhY3QsIGMoMTpsZW5ndGgod2VzYW5kZXJzb24pKSkKCgoKegpgYGAKCgojIyBUcnlpbmcgbGlzdCB2aWV3ZXIgd2l0aCB0aGUgRmluZ2VydGlwcyBBUEkKCi0gU3RhcnRpbmcgc2ltcGxlIHdpdGggdGhlIGFyZWEgdHlwZXMKCmBgYHtyfQphcmVhdXJsIDwtICJodHRwczovL2ZpbmdlcnRpcHMucGhlLm9yZy51ay9hcGkvYXJlYV90eXBlcyIKYXJlYXMgPC0gZnJvbUpTT04oYXJlYXVybCkKbGlzdHZpZXdlcjo6anNvbmVkaXQoYXJlYXMpCmBgYAoKVGhpcyB0ZWxscyB1cyB0aGF0IHRoZSByZXN1bHQgaXMgYSBKU09OIG9iamVjdC4gVGhlcmUgYXJlIDUxIGFyZWEgdHlwZXMuIFdlIGNhbiBzZWFyY2ggdGhlIHZpZXcgYW5kIGVhc2lseSBvYnRhaW4gdGhlIElEIGZvciBhbnkgZ2l2ZW4gYXJlYSBzbzoKCi0gYXJlYXR5cGUgNiBpcyAnR08gUmVnaW9uJywKLSBhcmVhdHlwZSAxOSBpcydDQ0cnIGFuZCBzbyBvbi4gCgojIyBVc2luZyBzZWFyY2ggdGVybXMgaW4gdGhlIEZpbmdlcnNpcHMgQVBJLgoKVXNpbmcgdGhpcyBmb3IgYSBzZWFyY2ggdGVybSByZXRyaWV2ZXMgYSBsaXN0IG9mIGluZGljYXRvciBJRHMgZm9yIGFyZWEgdHlwZXMuIFNvIGZvciB0aGUgdGVybSAnb2Jlc2l0eSc6CgpgYGB7ciBsaXN0dmlldyBvZiBGaW5nZXJ0aXBzIEFQSSBzZWFyY2h9CgpzZWFyY2hUZXJtIDwtICJvYmVzaXR5IgoKdXJsIDwtICJodHRwczovL2ZpbmdlcnRpcHMucGhlLm9yZy51ay9hcGkvaW5kaWNhdG9yX3NlYXJjaD9zZWFyY2hfdGV4dCIKCnVybCA8LSBwYXN0ZTAodXJsLCAiPSIsIHNlYXJjaFRlcm0pCgpkZiA8LSBmcm9tSlNPTih1cmwsIHNpbXBsaWZ5RGF0YUZyYW1lID0gVFJVRSkKc3RyKGRmLCBtYXgubGV2ZWwgPSAxKQoKbGlzdHZpZXdlcjo6anNvbmVkaXQoZGYpCgpgYGAKIyMgRXh0cmFjdGluZyBpbmRpY2F0b3IgSURzIGFuZCBhcmVhIHR5cGVzIHRvIGEgZGF0YSBmcmFtZQoKVXNpbmcgdGhlIGBwdXJycjo6bWFwX2RmYCBmdW5jdGlvbiBhbmQgYG1hZ3JpdHRyOjpleHRyYWN0YApgYGB7ciBleHRyYWN0aW5nIHRoZSBpZHMgYXJlIGFyZWEgdHlwZXMgdG8gYSBkYXRhIGZyYW1lfQoKbGlicmFyeSh0aWR5cikKCnRlc3QgPC0gbWFwX2RmKGRmLCBleHRyYWN0LCBjKDE6NTkpKQoKdGVzdCAlPiUKICBzZWxlY3QoLWMoYDJgLCBgNDFgLCBgMTE4YDpgMTIwYCkpICU+JSAjIyByZW1vdmUgbnVsbCBsaXN0cwogIGdhdGhlcihhcmVhdHlwZSwgaW5kaWNhdG9yKQoKYGBgCgpXZSBjYW4gc2VlIHRoYXQgNTkgaW5kaWNhdG9ycyBmb3IgYXJlYXR5cGUgMTAyIChDb3VudGllcyBhbmQgVW5pdGFyeSBBdXRob3JpdGllcyksIDQ2IGZvciAxMDEgKExBRCBhbmQgVUEpLCA0MSBmb3IgR08gUmVnaW9ucyBhbmQgMTIgZm9yIENDR3MuCgoK