-
Couldn't load subscription status.
- Fork 2.1k
Open
Labels
bugan unexpected problem or unintended behavioran unexpected problem or unintended behavior
Description
Currently dplyr warns users who accidentally use = instead of ==.
However, this does not occur if a logical is passed as the named variable.
Demonstration
library(dplyr)
mtcars$big_cyl <- mtcars$cyl > 4
# Mistaking = for == silently fails, returning the whole dataset
filter(mtcars, big_cyl = TRUE) |>
nrow()
#> [1] 32Correctly using == for comparison
# Correctly using ==.
filter(mtcars, big_cyl == TRUE) |>
nrow()
#> [1] 21I think while doing x == TRUE is bad practice, this is bound to trip up some users and an error should be thrown.
Additional context
Example of the error working correctly:
# version 1.1.4
dplyr::filter(mtcars, cyl = "4")
#> Error in `dplyr::filter()`:
#> ! We detected a named input.
#> ℹ This usually means that you've used `=` instead of `==`.
#> ℹ Did you mean `cyl == "4"`?Interestingly if the TRUE is in a vector the error is thrown.
dplyr::filter(mtcars, big_cyl = c(TRUE))
#> Error in `dplyr::filter()`:
#> ! We detected a named input.
#> ℹ This usually means that you've used `=` instead of `==`.
#> ℹ Did you mean `big_cyl == c(TRUE)`?Metadata
Metadata
Assignees
Labels
bugan unexpected problem or unintended behavioran unexpected problem or unintended behavior