The [Coding Style](https://github.com/PecanProject/pecan/wiki/Coding-style) wiki page currently states:

#### Package Dependencies: library vs require vs DEPENDS

When another package is required by a function or script, it can be called in the following ways:

1. As a package dependency loaded with the package
   This should be the default approach when writing functions in a package. There can be some exceptions, for example when a rarely-used or non-essential function requires an esoteric package. 
2. using `library`
   if dependency is not met, will print an error and stop
3. using `require`
   will print a warning and continue (but will throw an error when a function from the required package is called) 

It is considered best practice to use DEPENDS and SUGGESTS in DESCRIPTION; SUGGESTS should be used for packages that are called infrequently, or only in examples and vignettes; suggested packages are called by require inside a function.

From p. 6 of the "R extensions manual":http://cran.r-project.org/doc/manuals/R-exts.html

> The `Suggests` field uses the same syntax as `Depends` and lists packages that are not necessarily needed. This includes packages used only in examples, tests or vignettes (see Section 1.4 [Writing package vignettes], page 26), and packages loaded in the body of functions. E.g., suppose an example from package foo uses a dataset from package bar. Then it is not necessary to have bar use foo unless one wants to execute all the examples/tests/vignettes: it is useful to have bar, but not necessary. Version requirements can be specified, and will be used by R CMD check.

Reference: Stack Overflow ["What is the difference between require and library?"](http://stackoverflow.com/questions/5595512/what-is-the-difference-between-require-and-library)