【问题标题】:across function not found in dplyr package [duplicate]在 dplyr 包中找不到跨函数 [重复]
【发布时间】:2020-10-16 01:17:40
【问题描述】:

我想在dplyr 中使用across() 函数,但出现错误。例如,运行

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

给我

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

across() 是最近在dplyr 中引入的https://towardsdatascience.com/what-you-need-to-know-about-the-new-dplyr-1-0-0-7eaaaf6d78ac。但是,包dplyr 已更新并加载

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

检查内部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" 

我发现across 不存在,但是如果我在帮助程序?across 中查找该函数,我会看到解释across 功能的经典页面。

如何让across 工作?

----- 编辑-----

我的sessionInfo()如下:

> 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"

【问题讨论】:

  • 如果你用dplyr::across 更明确地调用它,它有效吗?
  • 不,它没有。 Error: 'across' is not an exported object from 'namespace:dplyr'
  • 加载包后是否在 sessionInfo 中列出了 dplyr 1.0.0?我想知道您是否在其他地方有另一个版本的 dplyr 导致问题。也许还添加您的操作系统信息;我无法在 Windows 7 R 4.0 中重现该问题。
  • 我将会话信息和.libPath() 输出附加到我的问题中
  • 似乎可以在我的系统上运行(最近更新的 R 和所有软件包)。您是否尝试过更新软件包并先重新启动?然后也许更新到 R 4.0.1?可能无法解决但值得一试?

标签: r dplyr across


【解决方案1】:

cross 功能仅在 dplyr 的开发版本中可用,在 CRAN 上尚不可用 要使用 accross 功能,请使用以下代码安装 dplyr dev 版本

install.packages("devtools")

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

现在你的代码应该可以工作了

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

输出

# 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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2019-10-14
  • 2015-07-14
  • 2020-01-07
  • 2020-08-20
  • 2018-10-17
  • 2019-08-18
  • 1970-01-01
相关资源
最近更新 更多