diff --git a/R-package/R/lgb.Dataset.R b/R-package/R/lgb.Dataset.R index 9ba3cefae7e..e1bdb546da3 100644 --- a/R-package/R/lgb.Dataset.R +++ b/R-package/R/lgb.Dataset.R @@ -167,7 +167,7 @@ Dataset <- R6Class( if (!is.null(private$reference)) { ref_handle <- private$reference$.__enclos_env__$private$get_handle() } - handle <- 0.0 + handle <- NA_real_ # Not subsetting if (is.null(private$used_indices)) { diff --git a/R-package/R/utils.R b/R-package/R/utils.R index 760510482c8..cfd4f96d857 100644 --- a/R-package/R/utils.R +++ b/R-package/R/utils.R @@ -7,7 +7,7 @@ lgb.is.Dataset <- function(x) { } lgb.is.null.handle <- function(x) { - is.null(x) || x == 0.0 + is.null(x) || is.na(x) } lgb.encode.char <- function(arr, len) { diff --git a/R-package/tests/testthat/test_dataset.R b/R-package/tests/testthat/test_dataset.R index 617bedc7dac..e6c98081ce7 100644 --- a/R-package/tests/testthat/test_dataset.R +++ b/R-package/tests/testthat/test_dataset.R @@ -26,6 +26,8 @@ test_that("lgb.Dataset: basic construction, saving, loading", { test_that("lgb.Dataset: getinfo & setinfo", { dtest <- lgb.Dataset(test_data) + dtest$construct() + setinfo(dtest, 'label', test_label) labels <- getinfo(dtest, 'label') expect_equal(test_label, getinfo(dtest, 'label')) @@ -66,3 +68,17 @@ test_that("lgb.Dataset: nrow is correct for a very sparse matrix", { dtest <- lgb.Dataset(x) expect_equal(dim(dtest), dim(x)) }) + +test_that("lgb.Dataset: Dataset should be able to construct from matrix and return non-null handle", { + rawData <- matrix(runif(1000),ncol=10) + handle <- NA_real_ + ref_handle <- NULL + handle <- lightgbm:::lgb.call("LGBM_DatasetCreateFromMat_R" + , ret = handle + , rawData + , nrow(rawData) + , ncol(rawData) + , lightgbm:::lgb.params2str(params=list()) + , ref_handle) + expect_false(is.na(handle)) +})