加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 04:53:44 所属栏目:百科 来源:网络整理
导读:我想在我的包中添加一个回退依赖项.问题是我想要符合CRAN并且无法弄清楚如何正确地完成它. 更具体地说,我想使用data.table的fread / fwrite.除此之外,我不想拥有完整的data.table依赖.如果没有安装data.table,我的软件包应该回退到使用标准的read.csv和write
我想在我的包中添加一个回退依赖项.问题是我想要符合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.我在许多软件包中使用非常成语.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读