特定の変数または関数がパッケージに存在するかどうかをテストしようとしています。たとえば、呼び出された関数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
。さまざまな関数がエクスポートされることをテストしたいと思います。