「ワークスペースイメージの保存」を無効にする方法 Rでプロンプト?


91

インタラクティブRシェルを終了すると、毎回迷惑なプロンプトが表示されます。

>
>
ワークスペースイメージを保存しますか?[y / n / c]:n

私は常に「いいえ」と答えています。自分の作業を保存したい場合は、終了する前にそれを行うためです。

プロンプトを取り除く方法は?


注:を参照 ?save.image


7
@Spacedman:WindowsではCtrl + Zなので、何も「取り消し」ようとしないでください。;-)
Joshua Ulrich

3
GNU / Linuxでは、開始R --vanilla
aL3xa '14

q().Rprofieのカスタム関数を使用したこの回答も参照してください:stackoverflow.com/a/13043239/180892
Jeromy Anglim

5
価値のあるものとして、RStudioにはこのための設定フックがあります
Ben Bolker

1
fwiw(また)、これはラジアン Rコンソールのデフォルトの動作です。
Keith Hughitt、

回答:


76

--no-saveRの起動時にコマンドライン引数を渡すか、q関数をオーバーライドできます。

utils::assignInNamespace(
  "q", 
  function(save = "no", status = 0, runLast = TRUE) 
  {
    .Internal(quit(save, status, runLast))
  }, 
  "base"
)

上記のコードを.Rprofileに入れて、起動時にすべてのセッションで実行されるようにします。


2
@Sachaそうは上を見とるstackoverflow.com/questions/1189759/...
マレク

2
Defaultsパッケージをインストールし、上記のコードをRprofile.siteファイル(Windows 7でR 2.15.1を実行)に追加した後、次のエラーが発生します: "BindingIsLocked(name、as.environment(find(name))でエラーが発生しました) ):関数 'find'が見つかりませんでした "
ジョンD.クック

2
Defaultsパッケージは明らかに削除されています。
Praxeolitic 2014年

1
「エラー:関数「assignInNamespace」が見つかりませんでした」が表示されます。OS X上のR 3.1.2
Josh Hansen

5
@Josh Hansenが.Rprofileにライブラリ(utils)を追加して、assignInNamespaceを見つけます
FXQuantTrader

30

最も簡単なLinuxソリューションをまだ見つけていません:)

ubuntuで次の行をyourに追加します~/.bashrc

alias R='R --no-save'

でRコンソールを起動するたびにR--no-saveオプションが渡されます。


2
または、上記のコメントで指定されている@ aL3xa R --vanillaを組み合わせて使用しCombine --no-save, --no-restore, --no-site-file, --no-init-file and --no-environます。
ポールルージュ16年

22

ワークスペースイメージを保存しますか?」プロンプトは、Ctrl+D

したがって、Ctrl+DインタラクティブRで2回実行すると、ワークスペースを保存せずにRを終了します。

(LinuxおよびOS Xでテスト済み)


11

Rguiを使用している場合は、Rの起動に使用するアイコンを右クリックして[プロパティ]をクリックし、Rを起動するコマンドに--no-saveを追加します。

http://tolstoy.newcastle.edu.au/R/help/05/03/1115.htmlから)

Rgui以外のエディターを使用している場合は、Rを起動するときに--no-saveをRコマンドラインに渡す必要があります。


プロパティタブのスクリーンショットを共有していただけますか?
Ashrith

8

quit関数の保存引数のデフォルトオプションを上書き

formals(quit)$save <- formals(q)$save <- "no"

この行を.Rprofileに入れます

編集:追加されたqので、どのバリアントを使用してもプロンプトは表示されません


> formals(quit)$ save <-"no"> q()ワークスペースイメージを保存しますか?[y / n / c]:
O.rka 2018

5

qq().Rprofileファイルに関数を簡単に追加できます

 qq <- function(save="no") { q(save=save)}

保存オプションはオプションで利用できると思いましたが、どうやらジョシュアの答えが最善です。


5

mreqBondedDustが提供する両方の戦略の最良のものを取得します。

〜/ .bashrcに次の行を追加して、デフォルトで保存しないようにします。

alias R='R --no-save'

しかし、これを〜/ .Rprofileに追加することにより、終了時に簡単に保存する方法を自分に与えてください:

qs <- function(save="yes") { q(save=save)}

したがって、q()保存せずに(またはプロンプトをqs()出さずに)終了しますが、保存して終了します(これもプロンプトを出さずに)


3

q('no')代わりに入力してプロンプトを回避するのはどうですか


20
..プロンプトに答えるよりもキーボードヒットが多い:-)
TMS

3

私のように、ブラケットのペア全体を入力すると、replを終了するのに手間がかかりすぎるように思える場合は、これを試すことができます。

exit <- structure(list(), class = "exit_command")

print.exit_command <- function(...) {
  q("no")  # exit without saving
}

これにより、新しいクラスが作成され、そのクラスを印刷しようとするとRが終了します。その結果exit、R replで実行すると、すべてが終了します(印刷しようとするため)。

注意:~/.Rprofile各セッションの開始時にロードするように追加できます。


2

Rコマンドのエイリアスを作成できます。

bashを使用alias R='R --no-save'

cshを使用: alias R 'R --no-save'


-2

冒険したい場合startupは、の最後にあるセクションを編集して、exec呼び出しに/usr/bin/R追加--no-saveすることもできます。ただし、ワークスペースを保存する必要がある場合は、に注意してくださいsave.image()


1
私はこれまで直接何かを編集したことはありませ/usr/bin —そうすることを強くお勧めしません。それがシステム領域であり、「無許可の人員は禁止されています」。
ulidtko

3
@ulidtkoそれが私のシステムである場合、私は承認されます:)これが良い考えではない本当の理由は、将来のアップグレードによって上書きされるためです。
Michael Mior

@MichaelMiorそうですね、あなたは絶対的に正しいです。ただし、人間は混乱します。いつも。これは単なるガイドラインです。十分な理由がない限り、/usrロボット(つまり、パッケージマネージャー)は既にその領域を管理しているため、ロボットに任せてください。干渉しない方法があります。それ以外の場合は、意図的に冒険を求めています。
ulidtko
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.