web-dev-qa-db-ja.com

名前空間から関数を呼び出す

Rのパッケージ内のいくつかのコマンドの機能を変更しようとしています。コマンドのソースを確認するのは簡単です。ただし、この関数は、パッケージ名前空間にある他の関数を呼び出します。これらの関数はエクスポートされたオブジェクトではありません。どうすればそれらにアクセスできますか?

具体例:

Copula :: rmvdcで使用されるasCall()関数にアクセスするにはどうすればよいですか?

_require(copula)
copula::rmvdc
getAnywhere("asCall")
_

だからas.Call()はcopulaパッケージに存在しますが、どうすればそれにアクセスできますか?

_> copula::asCall
Error: 'asCall' is not an exported object from 'namespace:copula'
_
28
JD Long

これを試して:

copula:::asCall

これは 以前はR-helpで回答済み でした。その関数はパッケージ名前空間にエクスポートされなかったため、代わりに:::演算子を使用する必要があります。通常、関数は一般的な使用を目的としていない場合はエクスポートされません(たとえば、この場合、関数を文書化する必要はありません)。

65
Shane

開発時には、? assignInNamespace が非常に役立ちます。

これにより、エクスポートされていない関数の新しいコピーをパッケージの名前空間に挿入できます。

Rのエラーメッセージがもっと参考になれば幸いです。の代わりに:

Error: 'matrixToPaths' is not an exported object from 'namespace:OpenMx'

追加しないのはなぜですか:

You might try OpenMx:::matrixToPaths"
13
tim