There are several ways of loading a package, two of these ways are library() and require() functions. Both of these function load the functions that are in the requested library but they return two separate things.

library()

The library() function actually returns all the libraries currently loaded when you call it

libs = library(dplyr)
print(libs)
[1] "dplyr"     "knitr"     "rmarkdown" "stats"    
[5] "graphics"  "grDevices" "utils"     "datasets" 
[9] "base"     

require()

The require() function returns whether or not the library was able to be loaded, which if it fails is normally due to the fact that it doesn’t exist

libLoaded = require(dplyr)
print(libLoaded)
[1] TRUE

That means you can take advantage of the return of require() to ensure a packaged is installed without having to call install.packages() every time you want a package.

if(!require(dplyr)){
  install.packages("dplyr")
  #call require again because install.packages simply installs the package, it doesn't load it
  require(dplyr)
}

If you put the above code at the top of your script it will only call install.package if it has to. You can also turn the above into a function to be reused.

ensureLib <-function(libName){
  if(!require(libName, character.only = T)){
    install.packages(libName)
    #call require again because install.packages simply installs the package, it doesn't load it
    require(libName, character.only = T)
  }
}

ensureLib("dplyr")