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