包中建议的RDCOMClient
我的R-package通过描述文件使用RDCOMClient: 建议:RDCOMClient 以及以下(完美工作)代码: 或者。。如果打算在建议的软件包不可用时给出错误,只需使用例如rgl::plot3d 重新编码(据我所知)意味着删除require语句:包中建议的RDCOMClient,r,package,rdcomclient,R,Package,Rdcomclient,我的R-package通过描述文件使用RDCOMClient: 建议:RDCOMClient 以及以下(完美工作)代码: 或者。。如果打算在建议的软件包不可用时给出错误,只需使用例如rgl::plot3d 重新编码(据我所知)意味着删除require语句: GetNewWrd <- function() { # Starts the Word application with wrd as handle wrd <- RDCOMClient::COMCreate("Word
GetNewWrd <- function() {
# Starts the Word application with wrd as handle
wrd <- RDCOMClient::COMCreate("Word.Application", existing=FALSE)
newdoc <- wrd[["Documents"]]$Add("",FALSE, 0)
wrd[["Visible"]] <- TRUE
invisible(wrd)
}
createCOMReference是RDCOMClient中的一个函数,如果没有显式的require语句,显然找不到它
看在上帝的份上,我应该如何按照CRAN的政策将RDCOMClient集成到我的包中?这是一个非常古老的问题,但我偶然发现了同样的问题。我使用以下变通方法,在
R CMD check
中不会发出警告,但在我看来,这是一个可怕的黑客行为:
if(requireNamespace(“RDCOMClient”,quilly=TRUE)){
如果(!“RDCOMClient”%in%.packages()){
attachNamespace(“RDCOMClient”)
}
# ...
}
createCOMReference
可能无法从RDCOMClient导出。您是否查看过其他已接受的软件包,如DescTools
?此外,现在我再次阅读了第1.1.3.1节,我认为这并不是说您不能使用require
,而是在可选的情况下,requireNamespace
路由可能会产生更少的问题。它担心函数可能被过度编写。这对于RDCOMClient函数来说似乎不太可能。我是DescTools的作者,我想上传一个更新。但里普利教授拒绝发表评论:您并没有遵守主流存储库中未重新建议或增强的策略:RDCOMClient*检查R代码中的依赖项。。。注意包代码中对“RDCOMClient”的“library”或“require”调用。请改用::或requireNamespace()。请参阅“编写R扩展”手册中的“建议的软件包”部分。我原以为OmegaHat会被视为主流回购协议。联系邓肯·坦普尔·朗有什么价值吗?:-)更奇怪的是,最新版本可以在他自己的网站上找到:。直接联系邓肯·坦普尔·朗也许是个好主意。。。。
if (requireNamespace("rgl", quietly = TRUE)) {
rgl::plot3d(...)
} else {
## do something else not involving rgl.
}
GetNewWrd <- function() {
# Starts the Word application with wrd as handle
wrd <- RDCOMClient::COMCreate("Word.Application", existing=FALSE)
newdoc <- wrd[["Documents"]]$Add("",FALSE, 0)
wrd[["Visible"]] <- TRUE
invisible(wrd)
}
Error in RDCOMClient::COMCreate("Word.Application", existing = FALSE) :
could not find function "createCOMReference"