From 3ba581201065248f5cff2de22aa972588258b246 Mon Sep 17 00:00:00 2001 From: Sebastian Fischer Date: Tue, 17 Oct 2023 10:36:58 +0200 Subject: [PATCH] Fix/duckdb missings (#34) --- DESCRIPTION | 2 +- NEWS.md | 4 ++++ R/DataBackendDuckDB.R | 2 +- tests/testthat/test_duckdb.R | 7 +++++++ 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 0925a97..3b59d1a 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: mlr3db Title: Data Base Backend for 'mlr3' -Version: 0.5.1 +Version: 0.5.1-9000 Authors@R: person(given = "Michel", family = "Lang", diff --git a/NEWS.md b/NEWS.md index e46eb54..ad85f98 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,7 @@ +# mlr3db 0.5.2 + +- Bugfix: `DataBackendDuckDB` calculated missing values incorrectly + # mlr3db 0.5.1 - Compatibility with new duckdb version (#36). diff --git a/R/DataBackendDuckDB.R b/R/DataBackendDuckDB.R index 08da4c5..03d0dd3 100644 --- a/R/DataBackendDuckDB.R +++ b/R/DataBackendDuckDB.R @@ -188,7 +188,7 @@ DataBackendDuckDB = R6Class("DataBackendDuckDB", inherit = DataBackend, cloneabl ) counts = unlist(DBI::dbGetQuery(private$.data, query), recursive = FALSE) - setNames(as.integer(self$nrow - counts), cols) + setNames(as.integer(length(rows) - counts), cols) } ), diff --git a/tests/testthat/test_duckdb.R b/tests/testthat/test_duckdb.R index 95ffe31..aa43425 100644 --- a/tests/testthat/test_duckdb.R +++ b/tests/testthat/test_duckdb.R @@ -62,3 +62,10 @@ test_that("multiple parquet file", { b = as_duckdb_backend(files) expect_backend(b) }) + +test_that("missings are calculated correctly", { + d = data.frame(x = c(NA, 1), y = c(1, 1)) + b = as_duckdb_backend(d, path = tempfile()) + expect_equal(b$missings(1, "x"), c(x = 1)) + expect_equal(b$missings(2, "x"), c(x = 0)) +})