2011-08-28 17 views
10

私はその同じディレクトリで別のファイルを含むファイルsource()にできるようにしたいが、私は、このファイルを実行する前に、R-プロンプトから、作業ディレクトリを設定する必要がありますする必要はありません:同じディレクトリのファイルをインクルードするには、R内の現在のファイルの場所を特定しますか?

> getwd() 
[1] "/Users/myser" 
> source("/Users/myuser/workspace/myproject/myfile.r") 

/users/myuser/workspace/myprojectの内部には、myfile.rとmy-utils.rがあります。 myfile.rはその中からsource('my-utils.r')を呼び出します。

他のプログラミング言語では、現在のファイルのパスを判断できます。 Rに似たものがありますか?例:chdirオプションをtrueに設定し、ソースファイルのパラメータは、完全なパスでされている場合、ファイルを調達しながら、

cur_dir <- sys.get_current_file_path() 
source(file.path(cur_dir, "my-utils.r")) 

答えて

11
source("/Users/myuser/workspace/myproject/my-utils.r", chdir=TRUE) 

、ファイルのディレクトリが作業ディレクトリとして使用されます。

注:パス名が一意ではないため、cur_dir <- sys.get_current_file_path()はあまり意味がありません。

+0

30秒でビート...いい答え。 –

+0

@Apprentice - 私の関数名はおそらく不十分でした。 os.path.realpath(\ _ \ _ file \ _ \ _) –

+1

このコード/ソリューションの問題は、その呼び出しの機能を 'source'にある既存のものと結び付けることですその特定のディレクトリ。ドロンがPythonに触発された擬似的な例を用いて撮影していたアプローチによって達成できるような、これに依存しない解決策を持つことは良いことです。私は何かが欠けている場合私を修正します。 – metasoarous

関連する問題