Skip to content

Commit

Permalink
allow argument na.rm in median() (#483)
Browse files Browse the repository at this point in the history
Fixes #442
  • Loading branch information
lorenzwalthert committed Sep 17, 2020
1 parent 7374ae3 commit 6399664
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 4 deletions.
2 changes: 2 additions & 0 deletions NEWS.md
@@ -1,6 +1,8 @@
# dbplyr (development version)

* All old lazy eval shims have been removed.
* `median()` now takes a new argument `na.rm` for consistency with `mean()`,
but still does always remove any missing values (@lorenzwalthert, #483).

# dbplyr 1.4.4

Expand Down
5 changes: 3 additions & 2 deletions R/translate-sql-quantile.R
Expand Up @@ -29,9 +29,10 @@ sql_median <- function(f,
style = c("infix", "ordered"),
window = FALSE) {

warned <- FALSE
quantile <- sql_quantile(f, style = style, window = window)

function(x) {
function(x, na.rm = FALSE) {
warned <<- check_na_rm(f, na.rm, warned)
quantile(x, 0.5)
}
}
Expand Down
14 changes: 12 additions & 2 deletions tests/testthat/test-translate-sql-quantile.R
Expand Up @@ -4,13 +4,23 @@ test_that("quantile and median don't change without warning", {
reg <- list(
quantile = translate_sql(quantile(x, 0.75), window = FALSE),
quantile_win = translate_sql(quantile(x, 0.75), vars_group = "g"),
median = translate_sql(median(x), window = FALSE),
median_win = translate_sql(median(x), vars_group = "g")
median = translate_sql(median(x, na.rm = TRUE), window = FALSE),
median_win = translate_sql(median(x, na.rm = TRUE), vars_group = "g")
)

expect_known_output(print(reg), test_path("sql/backend-quantile.sql"))
})


test_that("median functions warn once if na.rm = FALSE", {
old <- set_current_con(simulate_dbi())
on.exit(set_current_con(old))

expect_warning(translate_sql(median("x")), "Missing values")
expect_warning(translate_sql(median("x")), NA)
expect_warning(translate_sql(median("x", na.rm = TRUE)), NA)
})

test_that("checks for invalid probs", {
expect_error(check_probs("a"), "numeric")
expect_error(check_probs(1:3), "single value")
Expand Down

0 comments on commit 6399664

Please sign in to comment.