diff --git a/R-package/R/xgb.cv.R b/R-package/R/xgb.cv.R index e7687ac3d..1d747ba57 100644 --- a/R-package/R/xgb.cv.R +++ b/R-package/R/xgb.cv.R @@ -112,7 +112,12 @@ xgb.cv <- function(params=list(), data, nrounds, nfold, label = NULL, missing = } else { dtrain <- xgb.get.DMatrix(data, label, missing) } - params <- append(params, list(...)) + dot.params = list(...) + nms.params = names(params) + nms.dot.params = names(dot.params) + if (length(intersect(nms.params,nms.dot.params))>0) + stop("Duplicated defined term in parameters. Please check your list of params.") + params <- append(params, dot.params) params <- append(params, list(silent=1)) for (mc in metrics) { params <- append(params, list("eval_metric"=mc)) @@ -126,8 +131,8 @@ xgb.cv <- function(params=list(), data, nrounds, nfold, label = NULL, missing = obj = params$objective params[['objective']] = NULL } - if (!is.null(params$eval_metric) && !is.null(feval)) - stop("xgb.cv: cannot assign two different evaluation metrics") + # if (!is.null(params$eval_metric) && !is.null(feval)) + # stop("xgb.cv: cannot assign two different evaluation metrics") if (!is.null(params$eval_metric)) if (class(params$eval_metric)=='function') { feval = params$eval_metric diff --git a/R-package/R/xgb.train.R b/R-package/R/xgb.train.R index 0700577f7..fb403143a 100644 --- a/R-package/R/xgb.train.R +++ b/R-package/R/xgb.train.R @@ -136,7 +136,13 @@ xgb.train <- function(params=list(), data, nrounds, watchlist = list(), if (length(watchlist) != 0 && verbose == 0) { warning('watchlist is provided but verbose=0, no evaluation information will be printed') } - params = append(params, list(...)) + + dot.params = list(...) + nms.params = names(params) + nms.dot.params = names(dot.params) + if (length(intersect(nms.params,nms.dot.params))>0) + stop("Duplicated term in parameters. Please check your list of params.") + params = append(params, dot.params) # customized objective and evaluation metric interface if (!is.null(params$objective) && !is.null(obj))