library(rOpenserver) get_gap_model_01 <- function() { # get the GAP model "Gap Model.gap" gap_dir <- system.file("models", package = "rOpenserver") gap_model <- list.files(gap_dir, pattern = "*.GAP", ignore.case = TRUE)[1] gap_file <- file.path(gap_dir, gap_model) if (!file.exists(gap_file)) stop("Model not found ...") else return(gap_file) } # start OpenServer and GAP gserver <- newOpenServer() gserver$DoCmd("GAP.START") #> [1] 0 # open GAP model cmd_openfile <- paste0('GAP.OPENFILE("', get_gap_model_01(), '")') gserver$DoSlowCmd(cmd_openfile) #> [1] 0 # get the number of steps for the model prediction NumSteps <- as.integer(gserver$DoGAPFunc("GAP.PREDINIT()")) print(NumSteps) #> [1] 78 # exit GAP Sys.sleep(1) gserver$DoCmd("GAP.SHUTDOWN") #> [1] 0 gserver <- NULL
We can also do this using S3 methods derived from R6 classes
library(rOpenserver) get_gap_model_01 <- function() { # get the GAP model "Gap Model.gap" # this is the model used in VBA OpenServer gap_dir <- system.file("models", package = "rOpenserver") gap_model <- list.files(gap_dir, pattern = "*.GAP", ignore.case = TRUE)[1] gap_file <- file.path(gap_dir, gap_model) if (!file.exists(gap_file)) stop("Model not found ...") else return(gap_file) } # start OpenServer and GAP gserver <- setOpenServer() DoCmd(gserver, "GAP.START") #> [1] 0 # open the GAP model cmd_openfile <- paste0('GAP.OPENFILE("', get_gap_model_01(), '")') DoSlowCmd(gserver, cmd_openfile) #> [1] 0 # get the number of steps for the model prediction NumSteps <- as.integer(DoGAPFunc(gserver, "GAP.PREDINIT()")) print(NumSteps) #> [1] 78 # exit GAP Sys.sleep(1) DoCmd(gserver, "GAP.SHUTDOWN") #> [1] 0 gserver <- NULL # clean any OpenServer processes