`across` doesn't handle dynamically created function list
FinYang opened this issue · comments
across
doesn't handle a list of functions created inside the across
call. See reprex below.
library(dtplyr)
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
tibble(a = 1) %>%
lazy_dt() %>%
mutate(across(a, lapply(1:2, \(x) identity))) %>%
as_tibble()
#> Error in `across_funs()`:
#> ! `.fns` argument to dtplyr::across() must be a NULL, a function, formula, or list
Created on 2024-05-07 with reprex v2.1.0
Inside acrosss_funs
, a list of functions is identified using call name list
, so it wouldn't work with lists of functions created in other way.
Line 42 in 82aee6b
The creation is evaluated once later, but after the evaluation, it's passed through the same function across_fus
, which again ignores the list if it's not a call named list
.
Lines 46 to 52 in 82aee6b
BTW, is "dtplyr::across
" in the error message intentional?
Unfortunately this is a limit of the translation - you need to supply it an explicit list call of what you want to apply
Edit: This was also discussed a little bit here #154 (comment)