2017-12-22 9 views
5

名前空間を宣言し、その中に関数をエクスポートして、パッケージ全体を作成せずに::を使用してアクセスできる方法はありますか?名前空間を作成してその中に関数をエクスポートする方法は?

:::ため、次の作品ではなく、::

ns <- namespace::makeNamespace("my_namespace") 
assign("test",7, env=ns) 
my_namespace:::test # Triple colon - works. 
# [1] 7 
my_namespace::test # Double colon - doesn't work. 
# Error: 'test' is not an exported object from 'namespace:my_namespace' 

最後の行の作業になるだろうassignに代わるものはありますか? (目標は、それを開発しながら、パッケージをシミュレートできるようにすることですので、それは完全なパッケージであるかのように他のファイルには、それを使用することができますが、それはすぐにsourceではなくdevtools::install使用して再ロードすることができます。)

+1

あなたはノンベースパッケージを使用しているかどうかを示してください、あなたがエクスポートしたい名前空間内のすべてのオブジェクトを定義したら、それを使用してください。 'makeNamespace'関数が見つかりません。 – nicola

+0

@nicola謝罪 - それは名前空間:: makeNamespaceです。私は質問を編集しました。 – apc53c

答えて

2

base::namespaceExport(ns, ls(ns))(もちろん、2番目の引数でエクスポートするオブジェクトのリストとしてサブセットを使用することもできます)。

ns <- namespace::makeNamespace("my_namespace") 
assign("test", 7, env = ns) 
base::namespaceExport(ns, ls(ns)) 

my_namespace::test 

出力:

7 
関連する問題