微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.我在许多软件包中使用非常成语.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐