I am learning how to use the R package collapse to process the data. The syntax in collapse is similar to dplyr, with similar function names. Below is an example. Both code chunks work well. But since both packages contain the function across. I want to know if the second code chunk is actually using the across function from dplyr.
library(dplyr)
library(collapse)
# Group by cyl, then calculate mean for each columns using dplyr
mtcars %>%
group_by(cyl) %>%
summarise(across(.fns = mean))
# # A tibble: 3 × 11
# cyl mpg disp hp drat wt qsec vs am gear carb
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
# 1 4 26.7 105. 82.6 4.07 2.29 19.1 0.909 0.727 4.09 1.55
# 2 6 19.7 183. 122. 3.59 3.12 18.0 0.571 0.429 3.86 3.43
# 3 8 15.1 353. 209. 3.23 4.00 16.8 0 0.143 3.29 3.5
# Group by cyl, then calculate mean for each columns using collapse
mtcars %>%
fgroup_by(cyl) %>%
fsummarise(across(.fns = fmean))
# cyl mpg disp hp drat wt qsec vs am gear carb
# 1 4 26.66364 105.1364 82.63636 4.070909 2.285727 19.13727 0.9090909 0.7272727 4.090909 1.545455
# 2 6 19.74286 183.3143 122.28571 3.585714 3.117143 17.97714 0.5714286 0.4285714 3.857143 3.428571
# 3 8 15.10000 353.1000 209.21429 3.229286 3.999214 16.77214 0.0000000 0.1428571 3.285714 3.500000
I then tried the following code, specifying the across function from the collapse package, but it leads to an error.
mtcars %>%
fgroup_by(cyl) %>%
fsummarise(collapse::across(.fns = fmean))
Error in fsummarise(., collapse::across(.fns = fmean)) :
expressions need to be named or start with across(), or its shorthand acr().
It turns out collapse::across leads to an error showing that across is not in the collapse package.
collapse::across
Error: 'across' is not an exported object from 'namespace:collapse'
collapse:::across shows the functions as follows.
function (.cols = NULL, .fns, ..., .names = NULL, .apply = "auto",
.transpose = "auto")
{
stop("across() can only work inside fmutate() and fsummarise()")
}
<bytecode: 0x0000018a76156648>
<environment: namespace:collapse>
But the following still fails.
mtcars %>%
fgroup_by(cyl) %>%
fsummarise(collapse:::across(.fns = fmean))
Error in fsummarise(., collapse:::across(.fns = fmean)) :
expressions need to be named or start with across(), or its shorthand acr().
I want to know why collapse::across could not export the function, and if there are alternatives to specify a function in a specific package.