R CMD 检查,警告,Rd 交叉引用,没有可用的包

R CMD check, WARNING, Rd cross-reference, no package available

我正在 运行 R CMD 检查我的包裹。我的命令如下:

R CMD check --no-vignettes --no-manual --ignore-vignettes \path\to\package

我在检查 Rd 交叉引用时收到以下警告:

checking Rd cross-references ... WARNING Error in find.package(package, lib.loc) : there is no package called 'cluster' Calls: <Anonymous> -> lapply -> FUN -> find.package Execution halted

问题是我在代码中使用cluster包。它未在 DESCRIPTION 文件中列为依赖项。 /R 和 /man 中没有对 cluster 的引用。

可能发生了什么?

P.S。 附加信息:

> sessionInfo()
R version 3.5.3 (2019-03-11)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows Server x64 (build 14393)

Matrix products: default

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252    LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                           LC_TIME=English_United States.1252    

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

other attached packages:
[1] my_package_1.0.0   testthat_2.1.1

loaded via a namespace (and not attached):
 [1] Rcpp_1.0.1                 lubridate_1.7.4            prettyunits_1.0.2          assertive.properties_0.0-4
 [5] assertive.types_0.0-3      assertive.data.us_0.0-2    ps_1.3.0                   assertthat_0.2.1          
 [9] zeallot_0.1.0              rprojroot_1.3-2            digest_0.6.20              foreach_1.4.4             
[13] R6_2.4.0                   backports_1.1.4            assertive.code_0.0-3       pillar_1.4.2              
[17] assertive.strings_0.0-3    rlang_0.4.0                rstudioapi_0.10.0-9000     data.table_1.12.2         
[21] callr_3.3.0                assertive_0.3-5            assertive.data_0.0-3       desc_1.2.0                
[25] devtools_2.1.0             readr_1.3.1                stringr_1.4.0              compiler_3.5.3            
[29] xfun_0.8                   pkgconfig_2.0.2            pkgbuild_1.0.3             tidyselect_0.2.5          
[33] tibble_2.1.3               roxygen2_6.1.1             assertive.sets_0.0-3       codetools_0.2-16          
[37] crayon_1.3.4               dplyr_0.8.3                withr_2.1.2                commonmark_1.7            
[41] assertive.base_0.0-7       magrittr_1.5               assertive.models_0.0-2     cli_1.1.0                 
[45] stringi_1.4.3              fs_1.3.1                   assertive.matrices_0.0-2   remotes_2.1.0             
[49] doParallel_1.0.14          xml2_1.2.0                 assertive.reflection_0.0-4 assertive.datetimes_0.0-2 
[53] vctrs_0.2.0                iterators_1.0.10           RODBC_1.3-15               tools_3.5.3               
[57] glue_1.3.1                 purrr_0.3.2                assertive.numbers_0.0-2    hms_0.5.0                 
[61] processx_3.4.0             pkgload_1.0.2              parallel_3.5.3             assertive.files_0.0-2     
[65] assertive.data.uk_0.0-2    sessioninfo_1.1.1          memoise_1.1.0              knitr_1.23                
[69] usethis_1.5.1

更新:编辑了我的原文 post。

TLDR:确保您的库中没有空包目录。

我花了一些时间更深入地研究这个问题,这是正在发生的事情。

作为 R Rd 交叉引用检查的一部分,执行以下代码语句(使用了 tools 包中的一些函数):

base <- unlist(tools:::.get_standard_package_names()[c("base", "recommended")], 
    use.names = FALSE)
  base <- base[dir.exists(file.path(.Library, base))]
  aliases <- lapply(base, tools:::Rd_aliases, lib.loc = NULL)

base 变量包含来自 CRAN 发行版的 baserecommended 包的列表。您可以在此处了解这些内容(转到 5.1):

https://cran.r-project.org/doc/FAQ/R-FAQ.html#R-Add_002dOn-Packages

tools:::.get_standard_package_names() 实际上 returns 基本和推荐包的硬编码列表。然后,不存在于默认系统库位置的包将被删除。之后,tools:::Rd_aliases 应用于此列表。在我的例子中,.Library 输出的位置中有一个名为 cluster 的文件夹。与此同时,包裹本身也不见了。这就是我收到错误的原因。