Skip to content

Commit ba56e2a

Browse files
committed
test glmnet predict doesn't remove sparseness
1 parent 6a22f85 commit ba56e2a

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

tests/testthat/_snaps/sparsevctrs.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,3 +127,11 @@
127127
Error in `maybe_sparse_matrix()`:
128128
! no sparse vectors detected
129129

130+
# we don't run as.matrix() on sparse matrix for glmnet pred #1210
131+
132+
Code
133+
predict(lm_fit, hotel_data)
134+
Condition
135+
Error in `predict.elnet()`:
136+
! data is sparse
137+

tests/testthat/test-sparsevctrs.R

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,3 +313,32 @@ test_that("maybe_sparse_matrix() is used correctly", {
313313
fit_xy(spec, x = tibble::as_tibble(mtcars)[, -1], y = tibble::as_tibble(mtcars)[, 1])
314314
)
315315
})
316+
317+
test_that("we don't run as.matrix() on sparse matrix for glmnet pred #1210", {
318+
skip_if_not_installed("glmnet")
319+
320+
local_mocked_bindings(
321+
predict.elnet = function(object, newx, ...) {
322+
if (is_sparse_matrix(newx)) {
323+
stop("data is sparse")
324+
} else {
325+
stop("data isn't sparse (should not happen)")
326+
}
327+
},
328+
.package = "glmnet"
329+
)
330+
331+
hotel_data <- sparse_hotel_rates()
332+
333+
spec <- linear_reg(penalty = 0) %>%
334+
set_mode("regression") %>%
335+
set_engine("glmnet")
336+
337+
lm_fit <- fit_xy(spec, x = hotel_data[, -1], y = hotel_data[, 1])
338+
339+
expect_snapshot(
340+
error = TRUE,
341+
predict(lm_fit, hotel_data)
342+
)
343+
})
344+

0 commit comments

Comments
 (0)