我想在我的包中添加一个回退依赖项.问题是我想要符合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] 举报,一经查实,本站将立刻删除。