protection against returning 0-length vector

This commit is contained in:
Vadim Khotilovich 2016-06-09 02:45:02 -05:00
parent bdf14007b5
commit 754f3a6e07

View File

@ -187,18 +187,18 @@ getinfo <- function(object, ...) UseMethod("getinfo")
#' @rdname getinfo #' @rdname getinfo
#' @export #' @export
getinfo.xgb.DMatrix <- function(object, name) { getinfo.xgb.DMatrix <- function(object, name) {
if (typeof(name) != "character") { if (typeof(name) != "character" ||
stop("getinfo: name must be character") length(name) != 1 ||
} !name %in% c('label', 'weight', 'base_margin', 'nrow')) {
if (name != "label" && name != "weight" && stop("getinfo: name must one of the following\n",
name != "base_margin" && name != "nrow") { " 'label', 'weight', 'base_margin', 'nrow'")
stop(paste("getinfo: unknown info name", name))
} }
if (name != "nrow"){ if (name != "nrow"){
ret <- .Call("XGDMatrixGetInfo_R", object, name, PACKAGE = "xgboost") ret <- .Call("XGDMatrixGetInfo_R", object, name, PACKAGE = "xgboost")
} else { } else {
ret <- nrow(object) ret <- nrow(object)
} }
if (length(ret) == 0) return(NULL)
return(ret) return(ret)
} }