1. ホーム
  2. r

[解決済み] Rのセッションをバニラにするにはどうしたらいいですか?

2022-02-27 21:45:49

質問

この質問は、以前の質問に対する説明のためのフォローアップです。 同じサーバーで異なるユーザー間で、一貫したR環境を確保するにはどうすればよいですか?

例えば、以下のコマンドを使用して R を起動すると得られるのと同じような、quot;vanilla" R セッションに R 内から入りたいと思います。 R --vanilla . 例えば、特定のユーザーのカスタム設定に惑わされないようなスクリプトを書きたいのですが。

具体的には、次のようにしたい。

  • Rの履歴、プロファイル、環境ファイルを読み込まない。
  • 前のセッションのデータやオブジェクトを再読み込みしない

help("vanilla") は何も返しません。また、カスタム設定の範囲について十分に理解していないので、すべての設定から抜け出す方法を知っていません。

新しいバニラ環境を入力する方法はありますか?( ?new.env は役に立たないようです)

解決方法は?

現在のセッションをバニラにすることはできませんが、次のようにR内から新しいバニラRセッションを開始することは可能です。

> .Last <- function() system("R --vanilla")
> q("no")


Rが再起動した後、残りのスクリプトが実行されないため、上記をそのまま使用すると、おそらく問題にぶつかると思います。 次のコードでは、Rが実行されます。 .Last を実行してから終了します。  .Last は、サイトファイルや環境ファイルを読み込まず、起動時のメッセージも出力せずに再起動するように指示します。 再起動すると、あなたのコードが実行されます (他のクリーンアップも行われます)。

wd <- getwd()
setwd(tempdir())
assign(".First", function() {
  #require("yourPackage") 
  file.remove(".RData") # already been loaded
  rm(".Last", pos=.GlobalEnv) #otherwise, won't be able to quit R without it restarting
  setwd(wd)
  ## Add your code here
  message("my code is running.\n")
}, pos=.GlobalEnv)

assign(".Last", function() {
  system("R --no-site-file --no-environ --quiet")
}, pos=.GlobalEnv)
save.image() # so we can load it back when R restarts
q("no")