特定の変数または関数がパッケージに存在するかどうかをテストしようとしています。たとえば、呼び出された関数plotがパッケージ「graphics」に存在するかどうかをテストしたいとします。
以下は、関数plotが存在するかどうかをテストしますが、それがどのパッケージからのものであるかはテストしません。
exists('plot', mode='function')
または、呼び出されたものがパッケージにplot存在することをテストできgraphicsますが、これは関数であるかどうかを教えてくれません。
'plot' %in% ls('package:graphics')
「モードZのパッケージYにXというオブジェクトが存在するか」と尋ねる良い方法はありますか?(基本的existsに、特定のパッケージに制限できますか?)
(はい、上記の2行を組み合わせて、最初にあるテストをplot行いgraphics、次にのモードを要求できますplotが、独自の関数plotマスキングがある場合はどうgraphics::plotなりますか?次に、の出力を信頼できexists('plot', mode='function')ますか?)
背景:私のパッケージのテストを作成していて、さまざまな関数がエクスポートされていることをテストしたいと考えています。testthatパッケージのすべての内部機能を確認できる環境でテストを実行するパッケージを使用していてexists('myfunction', mode='function')、trueを返すことで悩まされてきましたが、実際にはエクスポートするのを忘れていましたmyfunction。さまざまな関数がエクスポートされることをテストしたいと思います。