maluicr
maluicr

Reputation: 39

Check if package installation is required while running code via source()?

I am running several scripts in RStudio and checking syntax errors. I am using source() in a loop to perform those tasks. In some scripts, install.packages("packagename") occurs. My problem is that when i have the required packages already installed in my computer, a message pops up asking me to update the library. In these cases, I would like to be able to "ignore" install.packages("packagename") call and running code to continue without showing any message.

So, how can i check if package installation is required or not while running code via source()?

Upvotes: 0

Views: 169

Answers (1)

VitaminB16
VitaminB16

Reputation: 1234

Bit of a hack, but given the location file, this will list all the packages inside the script:

require(readr)
require(stringr)
listPackages <- function(file)
{
  r <- readr::read_file(file)
  r = str_replace_all(r, '\\"', "") # remove all quote marks
  packages <- str_extract_all(r, regex("(install.packages|library|require|p_load)\\([:alnum:]*\\)*", multiline = TRUE))[[1]]
  return(unique(gsub("\\(", "", str_extract(packages, regex("\\([:alnum:]*", multiline = F)))))
}

Example

test.R:

library("ggplot2")
library(stats)
require("cowplot")
require(MASS)

add <- function(x,y) {x+y}

install.packages("cowplot")
p_load(dplyr)
p_load("dplyr")
listPackages("test.R")
# [1] "ggplot2" "stats"   "cowplot" "MASS"    "cowplot" "dplyr" 

Upvotes: 3

Related Questions