From bfe1421a9ffb9baeb76fe6aefbf29629e0868bfa Mon Sep 17 00:00:00 2001
From: Ben Anderson <dataknut@icloud.com>
Date: Thu, 26 Apr 2018 16:26:29 +1200
Subject: [PATCH] updated various functions & re-built

---
 greenGridr/R/dependencies.R |  4 +++
 greenGridr/R/utilities.R    | 63 +++++++++++++++++++++++++++++++++++++
 2 files changed, 67 insertions(+)
 create mode 100644 greenGridr/R/dependencies.R
 create mode 100644 greenGridr/R/utilities.R

diff --git a/greenGridr/R/dependencies.R b/greenGridr/R/dependencies.R
new file mode 100644
index 0000000..3008b3c
--- /dev/null
+++ b/greenGridr/R/dependencies.R
@@ -0,0 +1,4 @@
+# State required packages
+#' @import data.table
+#' @import lubridate
+#' @import readr
diff --git a/greenGridr/R/utilities.R b/greenGridr/R/utilities.R
new file mode 100644
index 0000000..8e50bfe
--- /dev/null
+++ b/greenGridr/R/utilities.R
@@ -0,0 +1,63 @@
+#' Tidy long numbers
+#'
+#' \code{tidyNum} reformats long numbers to include commas and prevents scientific formats
+#'
+#' @param number an input number or list
+#'
+#' @author Ben Anderson, \email{b.anderson@@soton.ac.uk}
+#' @export
+#'
+tidyNum <- function(number) {
+  format(number, big.mark=",", scientific=FALSE)
+}
+
+#' Find the path to Parent Directory
+#'
+#' Equivalent of \code{findParentDirectory}. Is useful for running a project
+#'   across multiple computers where the project is stored in different directories.
+#'
+#' @param Parent the name of the directory to which the function should track back.
+#' Should be the root of the GitHub repository
+#'
+#' @author Mikey Harper, \email{m.harper@@soton.ac.uk}
+#' @export
+#'
+findParentDirectory <- function(Parent){
+  directory <-getwd()
+  while(basename(directory) != Parent){
+    directory <- dirname(directory)
+
+  }
+  return(directory)
+}
+
+
+#' Installs and loads packages
+#'
+#' \code{myRequiredPackages} checks whether the package is already installed,
+#'   installing those which are not preinstalled. All the libraries are then load.
+#'
+#'   Especially useful when running on virtual machines where package installation
+#'   is not persistent (Like UoS sve). It will fail if the packages need to be
+#'   installed but there is no internet access
+#' @param ... A list of packages
+#' @param repository The repository to load functions from. Defaults to "https://cran.ma.imperial.ac.uk/"
+#' @importFrom  utils install.packages
+#'
+#' @author Luke Blunden, \email{lsb@@soton.ac.uk} (original)
+#' @author Michael Harper \email{m.harper@@soton.ac.uk} (revised version)
+#' @export
+#'
+myRequiredPackages <- function(..., repository = "https://cran.rstudio.com"){
+
+  packages <- c(...)
+
+  # Find if package isn't installed
+  newPackages <- packages[!(packages %in% utils::installed.packages()[,1])]
+
+  # Install if required
+  if (length(newPackages)){utils::install.packages(newPackages, dependencies = TRUE)}
+
+  # Load packages
+  sapply(packages, require, character.only = TRUE)
+}
-- 
GitLab