2017-07-03 5 views
0

私の研究では、Rデータオブジェクト(.RData)をエクスポートするRパッケージを開発しました。これらの.RDataファイルの名前は常に同じです(例:files.RData)。これらのパッケージは、データをデータベースにアップロードする関数、たとえばupload_data()も定義してエクスポートします。 upload_data()の内部でデータ(file、package = "PACKAGE NAME")を使用してデータを読み込んだ後、それをデータベースにプッシュします。プログラムでパッケージ名のベクトルを指定したパッケージ関数への呼び出しを生成

私のファイルシステムには2つのパッケージpackage1とpackage2があります。パッケージ名(c( "package1"、 "package2"))のベクトルが与えられた場合、私はどのようにプログラムでupload_data()を呼び出すのでしょうか?具体的には、スクリプトの中で、どのようにして "::"表記法を使用して呼び出しを構築し、このような呼び出しを構成して評価するかは、package1 :: upload_data())です。私は '電話'を試みたが、それは正しくできなかった。

+0

コード例を提供してください – theArun

+0

本当に* :: *表記を使用する必要がありますか?あなたは 'get(" upload_data "、envir = asNamespace(" package1 "))' – Dason

+1

@Dasonを使って関数を直接得ることができます。 get()を完全に忘れました。パラメータを指定してこの関数を呼び出すだけで、ジョブ(get( "upload_data"、envir = asNamespace( "package1"))(host = "mongodb:// localhost")を実行します。 –

答えて

0

あなた::表記を使用して通話を構築し、その評価のルートを行くことができる - それは直接getを使用し、あなたからつかむしたいパッケージを指定するには、おそらく簡単です。

get("upload_data", envir = asNamespace("package1")) 

は、package1::upload_dataと同じ機能を返しますが、プログラムで処理する方がはるかに簡単です。

関連する問題