#' Save xgboost model to R's raw vector, #' user can call xgb.load.raw to load the model back from raw vector #' #' Save xgboost model from xgboost or xgb.train #' #' @param model the model object. #' @param raw_format The format for encoding the booster. Available options are #' \itemize{ #' \item \code{json}: Encode the booster into JSON text document. #' \item \code{ubj}: Encode the booster into Universal Binary JSON. #' \item \code{deprecated}: Encode the booster into old customized binary format. #' } #' #' @examples #' \dontshow{RhpcBLASctl::omp_set_num_threads(1)} #' data(agaricus.train, package='xgboost') #' data(agaricus.test, package='xgboost') #' #' ## Keep the number of threads to 2 for examples #' nthread <- 2 #' data.table::setDTthreads(nthread) #' #' train <- agaricus.train #' test <- agaricus.test #' bst <- xgb.train(data = xgb.DMatrix(train$data, label = train$label), max_depth = 2, #' eta = 1, nthread = nthread, nrounds = 2,objective = "binary:logistic") #' #' raw <- xgb.save.raw(bst) #' bst <- xgb.load.raw(raw) #' #' @export xgb.save.raw <- function(model, raw_format = "ubj") { handle <- xgb.get.handle(model) args <- list(format = raw_format) .Call(XGBoosterSaveModelToRaw_R, handle, jsonlite::toJSON(args, auto_unbox = TRUE)) }