DESCRIPTION ファイルを介して RDCOMClient を使用して R パッケージを作成しました。
提案: RDCOMClient
および次の(完全に機能する)コード:
GetNewWrd <- function() {
stopifnot(require(RDCOMClient))
# 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)
}
現在、これは悪い習慣と見なされているようであり、「R 拡張機能の作成、1.1.3.1 推奨パッケージ」では、次のように定式化するように指示されています。
if (requireNamespace("rgl", quietly = TRUE)) {
rgl::plot3d(...)
} else {
## do something else not involving rgl.
}
または: ..提案されたパッケージが利用できない場合にエラーを発生させることが意図されている場合は、単純にたとえば rgl::plot3d を使用します。
これを(私の理解では)再コーディングするということは、単にrequireステートメントを削除することを意味します:
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"
createCOMReference は RDCOMClient の関数であり、明示的な require ステートメントがないと見つからないようです。
CRANのポリシーに準拠したパッケージにRDCOMClientを統合するにはどうすればよいですか???