Skip to content

Commit 151f0ce

Browse files
Reverting lgb.train(), using helper in lgb.Dataset
1 parent d39bc5d commit 151f0ce

File tree

2 files changed

+19
-8
lines changed

2 files changed

+19
-8
lines changed

R-package/R/lgb.Dataset.R

+17-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,17 @@ NULL
2121
return(c("label", "weight", "init_score", "group"))
2222
}
2323

24+
# [description] A more robust version of identical() for checking lgb.Dataset equivalence
25+
# [return] A single boolean.
26+
.datasets_are_equal <- function(ds1, ds2) {
27+
handler1 <- ds1$.__enclos_env__$private$get_handle
28+
handler2 <- ds2$.__enclos_env__$private$get_handle
29+
if (is.null(handler1) || is.null(handler2)) {
30+
return(FALSE)
31+
}
32+
return(identical(handler1(), handler2()))
33+
}
34+
2435
#' @importFrom methods is
2536
#' @importFrom R6 R6Class
2637
#' @importFrom utils modifyList
@@ -647,7 +658,12 @@ Dataset <- R6::R6Class(
647658
set_reference = function(reference) {
648659

649660
# setting reference to this same Dataset object doesn't require any changes
650-
if (identical(private$reference, reference)) {
661+
if (.datasets_are_equal(private$reference, reference)) {
662+
return(invisible(self))
663+
}
664+
665+
# The new reference and the existing object may be slices of a parent dataset
666+
if (.datasets_are_equal(private$reference, reference$.__enclos_env__$private$reference)) {
651667
return(invisible(self))
652668
}
653669

R-package/R/lgb.train.R

+2-7
Original file line numberDiff line numberDiff line change
@@ -184,14 +184,9 @@ lgb.train <- function(params = list(),
184184
next
185185
}
186186

187-
# Update parameters
187+
# Update parameters, data
188188
valid_data$update_params(params)
189-
190-
# No need to set reference if one exists
191-
if (is.null(valid_data$.__enclos_env__$private$reference)) {
192-
valid_data$set_reference(data)
193-
}
194-
189+
valid_data$set_reference(data)
195190
reduced_valid_sets[[key]] <- valid_data
196191

197192
}

0 commit comments

Comments
 (0)