いくつかのマシンのWindowsでRを使用しています。
このように、Rスクリプト内から作業ディレクトリを設定できることを知っています。
setwd("C:/Documents and Settings/username/My Documents/x/y/z")
...しかし、これはスクリプトの移植性を壊します。また、すべてのスラッシュを元に戻す必要があるのも面倒です(Windowsはバックスラッシュを提供するため)
スクリプトレベルでこれを行う必要がないように、特定の作業ディレクトリでRを起動する方法はありますか?
Rへのショートカット(R.lnkファイル)を目的のフォルダーにコピーする必要があります。次に、[プロパティ](マウスの右ボタン->最後のオプション)で、2番目のタブ([ショートカット]?)の[開始]フィールドを削除します。このショートカットでRを起動すると、作業ディレクトリはショートカットのあるディレクトリになります。
私は英語版のWindowsを持っていないので、フィールド名についてはわかりませんが、簡単に見つけられるはずです。
同様の質問がR-windows-faqにありました。
2.10異なるプロジェクトのワークスペースを異なるディレクトリに保存するにはどうすればよいですか?
2.14では、
作業ディレクトリは、RguiまたはRtermが起動されたディレクトリです。ただし、ショートカットのプロパティの「開始」フィールドでショートカットが指定されている場合は使用されません。
環境変数を使用できます。これはSys.getenv()
およびSys.setenv()
で機能します。例えば:
_> Sys.setenv(R_TEST="testit")
> Sys.getenv("R_TEST")
R_TEST
"testit"
_
スクリプトで変数を送信した場合、内部から変数にアクセスし、その出力でsetwd()
を呼び出すことができるはずです。
ワークスペースを目的のディレクトリに保存してから、Windowsエクスプローラーからワークスペースを開きます。
スクリプトの前に次の行を追加すると、コンピューター間で作業できるようになります。
_setwd(path.expand("~/path/to/working/directory/") )
_
ここで〜は=ホームディレクトリになります。
Sys.setenv(HOME = "path")
またはSys.setenv(R_USER = "path")
は両方ともホームディレクトリを設定できます。
私の場合、私はそれぞれかなり異なるディレクトリ構造を持つ複数のウィンドウボックスで作業していますが、ホームディレクトリを適切に設定することで、コンピューター間でコードを同期し、Rプロジェクトを実行する場所が同様のディレクトリ構造になっているため、それぞれで適切に実行することができます。
詳細:言うようにスラッシュを逆にするのではなく、バックスラッシュをもう1つ追加します。これらの2つの\\は、これらの/の1つと同じように機能します。これにより、少なくとも少し簡単になります。
Emacs/ESSを使用している場合、これは問題ではありません。 Rスクリプトが置かれているディレクトリに移動して開き、R ESSプロセスを開始します。 Rコンソールが表示され、現在のディレクトリがRの作業ディレクトリとして表示されます。
Emacs/ESSに変換していない場合は、お勧めします。 (フレーム戦争を防ぐために、Viユーザーにも同様のオプションがあることに注意してください。)
お役に立てば幸いです。
Ubuntuの場合:
次のコマンドを.Rprofile
ファイル(通常はホームディレクトリ)に挿入します。
setwd(Sys.getenv("PWD"))
これで、デフォルトの作業ディレクトリは、Rを起動したディレクトリになります。 Rを起動する予定の場所(cwd
で.RData
を検索する前に起動ソース.Rprofile
)としてワークスペースイメージを.Rdata
として保存することで、異なるディレクトリにデフォルトのワークスペースを設定することもできます。
R作業ディレクトリを、現在作業中のRスクリプトの現在のディレクトリのように設定するには、次のようにコマンドgetwd()
とsetwd()
の組み合わせを常に使用します。
path <- getwd() setwd(path)
または
setwd(getwd())
詳細については、こちらをご覧ください 記事 。
乾杯、
[]の