8

I want to use the across() function in dplyr but get an error. For instance, running

iris %>%
  group_by(Species) %>%
  summarise(across(starts_with("Sepal"), mean))

gives me

Error in across(starts_with("Sepal"), mean) : 
  could not find function "across"

across() is a recent introduction https://towardsdatascience.com/what-you-need-to-know-about-the-new-dplyr-1-0-0-7eaaaf6d78ac in dplyr. However, the package dplyr is updated and loaded

packageVersion('dplyr')
[1] ‘1.0.0’

Checking inside dplyr

ls("package:dplyr")
  [1] "%>%"                   "add_count"             "add_count_"            "add_row"               "add_rownames"          "add_tally"            
  [7] "add_tally_"            "all_equal"             "all_vars"              "anti_join"             "any_vars"              "arrange"              
 [13] "arrange_"              "arrange_all"           "arrange_at"            "arrange_if"            "as_data_frame"         "as_label" 

I find that across does not exist, however if I look the function up in the helper ?across I get the classic page explaining the functionalities of across.

How to get across to work?

----- EDIT -----

My sessionInfo() is as follows:

> sessionInfo()
R version 3.6.1 (2019-07-05)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Mojave 10.14.6

Matrix products: default
BLAS:   /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] tidyselect_1.1.0 dplyr_1.0.0     

loaded via a namespace (and not attached):
 [1] Rcpp_1.0.3       cellranger_1.1.0 pillar_1.4.2     compiler_3.6.1   forcats_0.4.0    tools_3.6.1      jsonlite_1.6     lubridate_1.7.4  lifecycle_0.2.0 
[10] tibble_2.1.3     nlme_3.1-140     gtable_0.3.0     lattice_0.20-38  pkgconfig_2.0.3  rlang_0.4.6      cli_1.1.0        rstudioapi_0.10  haven_2.1.1     
[19] xml2_1.2.2       httr_1.4.1       stringr_1.4.0    generics_0.0.2   vctrs_0.3.1      hms_0.5.1        grid_3.6.1       glue_1.4.1       R6_2.4.0        
[28] fansi_0.4.0      readxl_1.3.1     readr_1.3.1      modelr_0.1.5     tidyr_1.0.0      purrr_0.3.3      ggplot2_3.2.1    magrittr_1.5     backports_1.1.4 
[37] scales_1.0.0     rvest_0.3.4      assertthat_0.2.1 tidyverse_1.2.1  colorspace_1.4-1 utf8_1.1.4       stringi_1.4.3    lazyeval_0.2.2   munsell_0.5.0   
[46] broom_0.5.2      crayon_1.3.4    
> .libPaths()
[1] "/Library/Frameworks/R.framework/Versions/3.6/Resources/library"
Andrew
  • 678
  • 2
  • 9
  • 19
  • If you call it more explicitly with `dplyr::across` does it work? – rpolicastro Jun 25 '20 at 14:42
  • Nope, it doesn't. `Error: 'across' is not an exported object from 'namespace:dplyr'` – Andrew Jun 25 '20 at 14:44
  • 1
    Is dplyr 1.0.0 listed in your sessionInfo after you load the package? I'm wondering if you have another version of dplyr somewhere else that is causing problems. Maybe also add your OS info; I can't reproduce the problem in Windows 7 R 4.0. – aosmith Jun 25 '20 at 14:48
  • `dplyr 1.0.0` is displyed under `other attached packages:` together with `tidyselect_1.1.0`. I'm running this on `Mac`. I don't know how to have other people reproducing this error (the code comes from the `across` help page) – Andrew Jun 25 '20 at 14:51
  • 2
    I attached the session info and `.libPath()` output to my question – Andrew Jun 25 '20 at 14:56
  • 1
    Appears to work on my system (recently updated R and all packages). Did you try updating packages and restarting first? Then maybe update to R 4.0.1? Might not solve but worth a try? – QAsena Jun 26 '20 at 03:01

1 Answers1

2

The across function is available only in the development version of dplyr, not on CRAN yet to use the accross function install dplyr dev version by using the code below

install.packages("devtools")

library(devtools)
devtools::install_github("tidyverse/dplyr")
library(dplyr)

now your code should work

data("iris")
iris %>%
  group_by(Species) %>%
  summarise(across(starts_with("Sepal"), mean))

output

# A tibble: 3 x 3
  Species    Sepal.Length Sepal.Width
  <fct>             <dbl>       <dbl>
1 setosa             5.01        3.43
2 versicolor         5.94        2.77
3 virginica          6.59        2.97
Macosso
  • 1,352
  • 5
  • 22
  • It is available since dplyr 1.0.0, see https://www.tidyverse.org/blog/2020/04/dplyr-1-0-0-colwise/ – zx8754 May 18 '21 at 07:59