R包中的后备和可选依赖关系是CRAN方式吗?

前端之家收集整理的这篇文章主要介绍了R包中的后备和可选依赖关系是CRAN方式吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在我的包中添加一个回退依赖项.问题是我想要符合CRAN并且无法弄清楚如何正确地完成它.

更具体地说,我想使用data.table的fread / fwrite.除此之外,我不想拥有完整的data.table依赖.如果没有安装data.table,我的软件包应该回退到使用标准的read.csv和write.csv.

我见过这个类似的帖子:Proper way to handle optional package dependencies

并且还使用了类似于@Hadley在评论中建议的技术:

req <- require(data.table)
if(req){ 
   data.table::fwrite(...)
 } else {
    write.csv(...)     

  }

这确实有效,但在运行CHECK时我得到一个注意:

在包代码中’library’或’require’调用’data.table’.
  请改用::或requireNamespace().

这意味着我不会通过CRAN的主管……

处理这个问题的正确方法是什么?

解决方法

正如文字所说:

>将(过期)调用require()替换为requireNamespace()
>然后,在TRUE情况下,调用包.
>我经常使用::来引用建议的包.

所以嘲笑这个(并注意,未经测试)我会做的

myreader <- function(file) {
    if (requireNamespace("data.table",quietly=TRUE)) {
       dat <- data.table::fread(file)
    } else {
       dat <- read.csv(file)
    }
    ## postprocess dat as needed
    dat
}

在GitHub上搜索用户很有用:cran l = R yourTerm所以请尝试this one.我在许多软件包中使用非常成语.

猜你在找的设计模式相关文章