4

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を統合するにはどうすればよいですか???

4

1 に答える 1