"src/vscode:/vscode.git/clone" did not exist on "5c0baf6fe008a9d59d604d0dd2742d4be4f9d6e1"
Unverified Commit 4546a8fd authored by david-cortes's avatar david-cortes Committed by GitHub
Browse files

[R-package] Use `cat()` instead of `print()` for metrics and callbacks (#6171)

parent 3405ee82
......@@ -78,8 +78,7 @@ LINTERS_TO_USE <- list(
, "true_false" = lintr::T_and_F_symbol_linter()
, "undesirable_function" = lintr::undesirable_function_linter(
fun = c(
"cat" = "CRAN forbids the use of cat() in packages except in special cases. Use message() or warning()."
, "cbind" = paste0(
"cbind" = paste0(
"cbind is an unsafe way to build up a data frame. merge() or direct "
, "column assignment is preferred."
)
......
......@@ -90,7 +90,7 @@ cb_print_evaluation <- function(period) {
# Check if message is existing
if (nchar(msg) > 0L) {
print(.merge_eval_string(env = env))
cat(.merge_eval_string(env = env), "\n")
}
}
......@@ -208,9 +208,9 @@ cb_early_stop <- function(stopping_rounds, first_metric_only, verbose) {
msg <- paste0(
"Will train until there is no improvement in "
, stopping_rounds
, " rounds."
, " rounds.\n"
)
print(msg)
cat(msg)
}
# Internally treat everything as a maximization task
......@@ -284,7 +284,7 @@ cb_early_stop <- function(stopping_rounds, first_metric_only, verbose) {
}
if (isTRUE(verbose)) {
print(paste0("Early stopping, best iteration is: ", best_msg[[i]]))
cat(paste0("Early stopping, best iteration is: ", best_msg[[i]], "\n"))
}
# Store best iteration and stop
......@@ -302,7 +302,7 @@ cb_early_stop <- function(stopping_rounds, first_metric_only, verbose) {
}
if (isTRUE(verbose)) {
print(paste0("Did not meet early stopping, best iteration is: ", best_msg[[i]]))
cat(paste0("Did not meet early stopping, best iteration is: ", best_msg[[i]], "\n"))
}
# Store best iteration and stop
......
......@@ -3805,3 +3805,26 @@ test_that("lightgbm() correctly sets objective when passing lgb.Dataset as input
)
expect_equal(model$params$objective, "regression")
})
test_that("Evaluation metrics aren't printed as a single-element vector", {
log_txt <- capture_output({
data(mtcars)
y <- mtcars$mpg
x <- as.matrix(mtcars[, -1L])
cv_result <- lgb.cv(
data = lgb.Dataset(x, label = y)
, params = list(
objective = "regression"
, metric = "l2"
, min_data_in_leaf = 5L
, max_depth = 3L
, num_threads = .LGB_MAX_THREADS
)
, nrounds = 2L
, nfold = 3L
, verbose = 1L
, eval_train_metric = TRUE
)
})
expect_false(grepl("[1] \"[1]", log_txt, fixed = TRUE))
})
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment