【问题标题】:What is the advantage of using library('tidyverse') instead of sub packages?使用 library('tidyverse') 而不是子包有什么好处?
【发布时间】:2018-10-19 20:15:57
【问题描述】:

我想知道如果我们调用 tidyverse 包会对大型 R (shiny) 应用程序产生什么影响。我们通常分别调用dplyrtidyr等。欢迎任何提示!

提前致谢!

【问题讨论】:

  • 将所有这些库打包在一起是一种简写。它还可以防止一个 tidyverse 库中的函数被另一个 tidyverse 库中的函数掩盖的问题。这是您加载 plyr 和 dplyr 的顺序问题
  • 我最近遇到了丢失那些同名函数的问题。感谢您的评论:)。现在事情变得更有意义了,调试起来非常困难:)
  • 事实上这是一个巨大的反模式,不要这样做。仅在需要时才显式加载包。不要加载你不需要的包。 Matt 的回答给出了为什么会这样的一些原因,但从根本上说,这是一个坏主意,因为它消除了代码中的显式性和控制性,唯一的好处是最小的便利性。

标签: r shiny tidyverse


【解决方案1】:

更新:截至 2020 年 5 月 14 日,递归依赖项计数现已达到 101 个。

tidyverse 包目前有 87 个依赖项。

  1. 加载所有这些会略微增加应用程序的启动时间,
  2. 如果您使用的是packrat,您现在必须在本地库中保存 87 个包的副本。如果您不使用 packrat,则可能会在 6 个月内更新并破坏您闪亮的应用程序。

如果您完全关心性能并长期维护此应用程序,我建议您尽量减少依赖关系并仅加载您实际使用的包。

sort(tools::package_dependencies(package="tidyverse", recursive=TRUE)$tidyverse)

#   [1] "askpass"      "assertthat"   "backports"   
#   [4] "base64enc"    "BH"           "broom"       
#   [7] "callr"        "cellranger"   "cli"         
#  [10] "clipr"        "colorspace"   "crayon"      
#  [13] "curl"         "DBI"          "dbplyr"      
#  [16] "desc"         "digest"       "dplyr"       
#  [19] "ellipsis"     "evaluate"     "fansi"       
#  [22] "farver"       "forcats"      "fs"          
#  [25] "generics"     "ggplot2"      "glue"        
#  [28] "graphics"     "grDevices"    "grid"        
#  [31] "gtable"       "haven"        "highr"       
#  [34] "hms"          "htmltools"    "httr"        
#  [37] "isoband"      "jsonlite"     "knitr"       
#  [40] "labeling"     "lattice"      "lifecycle"   
#  [43] "lubridate"    "magrittr"     "markdown"    
#  [46] "MASS"         "Matrix"       "methods"     
#  [49] "mgcv"         "mime"         "modelr"      
#  [52] "munsell"      "nlme"         "openssl"     
#  [55] "pillar"       "pkgbuild"     "pkgconfig"   
#  [58] "pkgload"      "plogr"        "plyr"        
#  [61] "praise"       "prettyunits"  "processx"    
#  [64] "progress"     "ps"           "purrr"       
#  [67] "R6"           "RColorBrewer" "Rcpp"        
#  [70] "readr"        "readxl"       "rematch"     
#  [73] "reprex"       "reshape2"     "rlang"       
#  [76] "rmarkdown"    "rprojroot"    "rstudioapi"  
#  [79] "rvest"        "scales"       "selectr"     
#  [82] "splines"      "stats"        "stringi"     
#  [85] "stringr"      "sys"          "testthat"    
#  [88] "tibble"       "tidyr"        "tidyselect"  
#  [91] "tinytex"      "tools"        "utf8"        
#  [94] "utils"        "vctrs"        "viridisLite" 
#  [97] "whisker"      "withr"        "xfun"        
# [100] "xml2"         "yaml"  

【讨论】:

  • 谢谢,我不知道该命令,因为我需要它来验证其他软件包。感谢分享。
猜你喜欢
  • 1970-01-01
  • 2010-09-14
  • 2022-08-03
  • 2016-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-11
  • 1970-01-01
相关资源
最近更新 更多