使用library('tidyverse')而不是子包的优势是什么?

12

我在想如果我们调用 tidyverse 包,对于一个大型的 R (shiny) 应用程序会有什么影响。我们通常单独调用 dplyrtidyr 等。欢迎提供任何提示!

提前感谢!


4
把所有这些库打包在一个里面是一种简便方式。这还可以防止 tidyverse 库中某个函数被另一个 tidyverse 库的函数覆盖掉的问题。这在加载 plyr 和 dplyr 的顺序方面曾经是一个问题。 - camille
最近我遇到了同名函数的问题。感谢这个评论:)。现在事情变得更加清晰,调试起来也不那么困难了:)。 - Joni Hoppen
实际上这是一个巨大的反范式,不要这样做。仅在需要时明确加载软件包。不要加载您不需要的软件包。Matt的回答提供了一些原因,但更根本的问题是它会从代码中删除明确性和控制,而唯一的好处是极小的方便性。 - Konrad Rudolph
1个回答

22
更新:截至2020年5月14日,递归依赖项计数现已增加至101个。
目前tidyverse包共有87个依赖项。
如果加载所有的依赖项,将会轻微增加应用程序的启动时间;如果您使用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"  

谢谢,我不知道那个命令,因为我需要它来验证其他的包。感谢分享。 - Joni Hoppen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接