繁体   English   中英

R package CRAN 注意 package 测试中的依赖项和警告

[英]R package CRAN note for package dependencies and warnings in tests

我打算将我的第一个 package 提交给 CRAN。 我听说你不应该有任何错误、警告或注释。 但是,我收到说明 package 依赖项太多的说明:

“Imports 包括 24 个非默认包。从如此多的包中导入会使 package 容易受到其中任何一个变得不可用的影响。尽可能多地移至 Suggests 并有条件地使用。”

  1. 关于 CRAN 提交,我必须解决这个注释吗?
  2. 使用的所有/大多数软件包都可以包含在内,因为它们维护良好,这对 state 有影响吗?
  3. 是否可以将 tidyverse 用作依赖项而不是每个单独的 package (我知道这在某种程度上违背了限制的目的;尽管无论如何有 20 包限制感觉相当随意,重点也应该放在使用良好- 维护的软件包)。

测试中的警告

我为 package 创建了测试用例; 但是,为了保持大小限制,我需要使用比通常使用的更少的案例; 这会在运行测试时产生不同的警告。 提交 CRAN 时是否可以有这些与测试相关的警告?

提前致谢! 约翰

在大多数情况下,假设您通过了R CMD CHECK --as-cran [yourpackage] ,“注释”不会自动导致审阅者拒绝您的提交。 在这种情况下,我会把建议牢记在心。
首先,决定你是否真的,真的需要所有这些进口,更不用说imports了。 这看起来确实是一个非常大的集合。 例如,确保您不能调用引用的包 A、B、C 和 D 中的某些函数,而不是调用包 K、Q 和 T 中的类似函数(列出从 A 到 X 的引用)。 If you're only using one standalone function from a package, ie a function which doesn't depend on any other item in that package, copy the source code from there, with attribution, into your package's source directory.

其次,仅当您的函数需要它们才能执行时才导入它们,而不管它们的参数列表如何。 仅支持特定“模式”或选项的软件包应移至Suggests

我希望您已阅读文档“R_exts”的相关部分,引用如下。

成功运行 R CMD 所需的所有包 7 检查 package 必须列在“IDepends”或“Suggests”或“之一”中。 用于有条件地运行示例或测试的包(例如,通过 if(require(pkgname)))应列在“建议”或“增强”中。 (这允许检查人员确保安装了完整检查所需的所有包。)特别是,为示例或小插曲提供“仅”数据的包应列在“建议”而不是“依赖”中,以便进行精益安装可能的。 库在加载 package 时使用“Depends”和“Imports”字段中的版本依赖关系,并且 install.packages 检查“Depends”、“Imports”和(对于依赖项 = TRUE)“Suggests”字段的版本。 这些字段中的信息的完整性和准确性变得越来越重要:例如,它用于计算哪些软件包依赖于更新的 package 以及哪些软件包可以安全地并行安装。 该方案是在所有包都有命名空间之前开发的(2011 年 10 月的 R 2.14.0),并且一旦到位,良好的实践就会改变。 现在应该很少使用字段“Depends”,仅用于旨在将其设施提供给最终用户(而不是 package 本身)的包:例如,有意义的用户package latticeExtra 需要 package lattice 的功能可用。 几乎所有在“Depends”中提到的包也应该从 NAMESPACE 文件中导入:这样可以确保当其他一些 package 导入当前的 package 时,这些包的任何需要的部分都可用。 'Imports' 字段不应包含不是从(通过 NAMESPACE 文件或:: 或::: 运算符)导入的包,因为需要安装该字段中列出的所有包才能安装当前的 package。 (这由 R CMD 检查检查。)R 代码在 ZEFE90A8E604A 库中调用或仅需要 67C840D78ZD0。 'Depends' 中列出的包永远不需要这样的调用,因为它们已经在搜索路径上。 在使用其功能的函数中对“建议”中列出的包使用 require 调用是一种常见的做法,但现在最好通过:: 调用来访问此类功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM