Closed RishavDaredevil closed 10 months ago
This is actually a difference between tidytable
and dplyr
. You don't need pick()
in functions like count()
or group_by()
. You can directly use tidyselect
functions like contains()
, where()
, etc.
library(tidytable)
mtcars |>
as_tidytable() |>
count(contains("mpg")) |>
head()
#> # A tidytable: 6 × 2
#> mpg n
#> <dbl> <int>
#> 1 10.4 2
#> 2 13.3 1
#> 3 14.3 1
#> 4 14.7 1
#> 5 15 1
#> 6 15.2 2
mtcars |>
as_tidytable() |>
group_by(contains("mpg")) |>
count() |>
head()
#> # A tidytable: 6 × 2
#> # Groups: mpg
#> mpg n
#> <dbl> <int>
#> 1 10.4 2
#> 2 13.3 1
#> 3 14.3 1
#> 4 14.7 1
#> 5 15 1
#> 6 15.2 2
I'll add an error message to count()
- I currently do that in group_by()
if you try to use pick()
.
library(tidytable)
mtcars |>
as_tidytable() |>
group_by(pick(contains("mpg")))
#> Error in `check_across()`:
#> ! `across()`/`pick()` are unnecessary in `group_by()`.
#> Please directly use tidyselect.
#> Ex: df %>% group_by(where(is.numeric))
#> Backtrace:
#> ▆
#> 1. ├─tidytable::group_by(as_tidytable(mtcars), pick(contains("mpg")))
#> 2. └─tidytable:::group_by.tidytable(as_tidytable(mtcars), pick(contains("mpg")))
#> 3. └─tidytable:::check_across(dots, "group_by")
#> 4. └─rlang::abort(msg)
thanks, I didn't know that.
should I close the issue @markfairbanks this is my first time asking a question on GitHub so I don't know the dynamics?
Can you keep it open? I'm going to use it so I update the error message for this case.
Typically I'll close an issue if I consider it "resolved" (which most maintainers will do the same). Sometimes if you're the user and you think it's resolved you can close it if they don't.
This is just sort of an odd case where the behavior is expected, but a better error message would still be helpful.
Just updated the error for the next release - thanks for catching this!
Created on 2023-11-01 with reprex v2.0.2