class: center, middle, inverse, title-slide .title[ # R Packages ] .author[ ### Justin Post ] --- layout: true <div class="my-footer"><img src="data:image/png;base64,#img/logo.png" style="height: 60px;"/></div> --- # What do we want to be able to do? Data Science! - Read in raw data and manipulate it - Combine data sources - Summarize data to glean insights - Apply common analysis methods - Communicate Effectively --- # Where Do Our Objects & Functions Come From? When you open R a few `packages` are loaded - R package: - Collection of functions/objects/datasets/etc. --- # Where Do Our Objects & Functions Come From? When you open R a few `packages` are loaded - R package: - Collection of functions/objects/datasets/etc. - Packages exist to do almost anything - <a href = "https://cran.r-project.org/web/packages/available_packages_by_name.html">List of CRAN</a> approved packages - Plenty of other packages on places like GitHub! --- # Where Do Our Objects & Functions Come From? - When you open R a few `packages` are loaded <img src="data:image/png;base64,#img/loadR.PNG" width="200px" style="display: block; margin: auto;" /> - `base` package has `c()`, `data.frame()`, `list()`, ... --- # Installing an R Package - First time using a package - Must **install package** - Can use code, menus, or Packages tab ```r install.packages("dplyr") ``` <img src="data:image/png;base64,#img/packages.png" width="500px" style="display: block; margin: auto;" /> --- # Accessing a Package in Your R Session - Only install once! - **Each session**: read in package using `library()` or `require()` ```r library("dplyr") ``` --- # Accessing a Package in Your R Session - Difference - if no package - `library()` throws an error - `require()` returns FALSE ```r library("notAPackage") ``` ``` ## Error in library("notAPackage"): there is no package called 'notAPackage' ``` ```r require("notAPackage") ``` ``` ## Warning in library(package, lib.loc = lib.loc, character.only = TRUE, ## logical.return = TRUE, : there is no package called 'notAPackage' ``` --- # Setting Packages to Automatically Load To load packages by default, access your `.Rprofile` file - Add in the code ``` options(defaultPackages=c(getOption("defaultPackages"), "mypackage1", "mypackage2")) ``` [See here for info on finding your `.Rprofile` file](https://stackoverflow.com/questions/46819684/how-to-access-and-edit-rprofile) --- # Accessing a Package in Your R Session - See everything from a package: ```r ls("package:dplyr") ``` ``` ## [1] "%>%" "across" "add_count" ## [4] "add_count_" "add_row" "add_rownames" ## [7] "add_tally" "add_tally_" "all_equal" ## [10] "all_of" "all_vars" "anti_join" ## [13] "any_of" "any_vars" "arrange" ## [16] "arrange_" "arrange_all" "arrange_at" ## [19] "arrange_if" "as.tbl" "as_data_frame" ## [22] "as_label" "as_tibble" "auto_copy" ## [25] "band_instruments" "band_instruments2" "band_members" ## [28] "bench_tbls" "between" "bind_cols" ## [31] "bind_rows" "c_across" "case_match" ## [34] "case_when" "changes" "check_dbplyr" ## [37] "coalesce" "collapse" "collect" ## [40] "combine" "common_by" "compare_tbls" ## [43] "compare_tbls2" "compute" "consecutive_id" ## [46] "contains" "copy_to" "count" ## [49] "count_" "cross_join" ``` --- # Calling From a Library - Call functions without loading full library with `::` - If not specified, most recently loaded package takes precedent ```r #stats::filter(...) calls time-series function from stats package dplyr::filter(iris, Species == "virginica") ``` ``` ## Sepal.Length Sepal.Width Petal.Length Petal.Width Species ## 1 6.3 3.3 6.0 2.5 virginica ## 2 5.8 2.7 5.1 1.9 virginica ## 3 7.1 3.0 5.9 2.1 virginica ## 4 6.3 2.9 5.6 1.8 virginica ## 5 6.5 3.0 5.8 2.2 virginica ## 6 7.6 3.0 6.6 2.1 virginica ## 7 4.9 2.5 4.5 1.7 virginica ## 8 7.3 2.9 6.3 1.8 virginica ## 9 6.7 2.5 5.8 1.8 virginica ## 10 7.2 3.6 6.1 2.5 virginica ## 11 6.5 3.2 5.1 2.0 virginica ## 12 6.4 2.7 5.3 1.9 virginica ## 13 6.8 3.0 5.5 2.1 virginica ## 14 5.7 2.5 5.0 2.0 virginica ## 15 5.8 2.8 5.1 2.4 virginica ## 16 6.4 3.2 5.3 2.3 virginica ## 17 6.5 3.0 5.5 1.8 virginica ## 18 7.7 3.8 6.7 2.2 virginica ## 19 7.7 2.6 6.9 2.3 virginica ## 20 6.0 2.2 5.0 1.5 virginica ## 21 6.9 3.2 5.7 2.3 virginica ## 22 5.6 2.8 4.9 2.0 virginica ## 23 7.7 2.8 6.7 2.0 virginica ## 24 6.3 2.7 4.9 1.8 virginica ## 25 6.7 3.3 5.7 2.1 virginica ## 26 7.2 3.2 6.0 1.8 virginica ## 27 6.2 2.8 4.8 1.8 virginica ## 28 6.1 3.0 4.9 1.8 virginica ## 29 6.4 2.8 5.6 2.1 virginica ## 30 7.2 3.0 5.8 1.6 virginica ## 31 7.4 2.8 6.1 1.9 virginica ## 32 7.9 3.8 6.4 2.0 virginica ## 33 6.4 2.8 5.6 2.2 virginica ## 34 6.3 2.8 5.1 1.5 virginica ## 35 6.1 2.6 5.6 1.4 virginica ## 36 7.7 3.0 6.1 2.3 virginica ## 37 6.3 3.4 5.6 2.4 virginica ## 38 6.4 3.1 5.5 1.8 virginica ## 39 6.0 3.0 4.8 1.8 virginica ## 40 6.9 3.1 5.4 2.1 virginica ## 41 6.7 3.1 5.6 2.4 virginica ## 42 6.9 3.1 5.1 2.3 virginica ## 43 5.8 2.7 5.1 1.9 virginica ## 44 6.8 3.2 5.9 2.3 virginica ## 45 6.7 3.3 5.7 2.5 virginica ## 46 6.7 3.0 5.2 2.3 virginica ## 47 6.3 2.5 5.0 1.9 virginica ## 48 6.5 3.0 5.2 2.0 virginica ## 49 6.2 3.4 5.4 2.3 virginica ## 50 5.9 3.0 5.1 1.8 virginica ``` --- # Quick R Example Let's jump into R and see how to download a package that will allow us to create a `.pdf` file from our `.qmd`! --- # R Packages Recap - Install packages first (download it) - Can do more than one at a time - Load package with `require()` or `library()` - Call a function without loading using `::`