6

私は常にスクリプトを次のように開始します。

rm(list=ls())

ワークスペースをクリアして、異なるスクリプト間の競合を回避します。ただし、変更されたすべてのオプションをデフォルトの状態に設定する方法も探しています。たとえば、一部のスクリプトでは、次のように設定して SS タイプを変更する必要があります。

options(contrasts=c(unordered="contr.sum", ordered="contr.poly"))

他のスクリプトでは、次のデフォルト オプションを使用する必要があります (これはデフォルトであるため、直接指定しません)。

options(contrasts=c(unordered="contr.treatment", ordered="contr.poly"))

しかし、変更されたオプションを含むスクリプトが直前に使用された場合、オプションは気付かないうちに明らかに変更されています。

R をデフォルトのオプションにリセットするために、スクリプトの上に置くことができるコマンドはありますか?

4

4 に答える 4

10

@chlが言ったように、デフォルトのオプションをどこかに保存できます。たとえば、次Rdataを使用してファイルに保存できsaveます。

default_options = options()
save(default_options, file = "default_options.rda")

これで、ファイルからこれらのデフォルトをロードして適用できます。

load("default_options.rda")
options(default_options)

ただし、R スクリプトを連続して実行することはお勧めしません。代わりに、スクリプト間で機能を共有している場合は、その機能をキャプチャする関数を作成するだけです。作業するスクリプトは常に自己完結型であり、以前に実行された他のスクリプトからの影響はありません。設定したオプションはすべてそのスクリプトに対してローカルであり、ワークスペースを空にしたり、オプションをデフォルトに設定したりする必要はありません。

作業環境も保存しないことに注意してください。私は常に生データとその生データを変換するスクリプトを使用して環境を再構築します。時間がかかる部分がある場合は、別のスクリプトに入れ、最後に をRdata使用してファイルを保存しますsave。次に、を使用してメイン スクリプトにロードしますload

于 2013-04-11T11:09:21.577 に答える
2

これは、デフォルトを手動で取得する必要のない簡単でエレガントなワンライナーです。

default_opts <- callr::r(function(){options()}); options(default_opts)

仕組み:

callrは devtools に付属するパッケージです (したがって、devtools がインストールされている場合は、既にcallr.

callr::rバックグラウンド プロセスを開始するだけなので、デフォルト オプションを取得options()して現在の R セッションに戻すことができます。

# Default option
options("scipen")
# $scipen
# [1] 0

# Set to something else
options(scipen = 999)
# $scipen
# [1] 999

# Reset to defaults:
default_opts <- callr::r(function(){options()}); options(default_opts)


# Did it work? yes, the option is back to its default value
options("scipen")
# $scipen
# [1] 0
于 2020-07-26T19:24:22.267 に答える
1

Rstudio プロジェクトの機能を使えば、すべての問題を一度に解決できます。rm(list=ls()) を避けるべき理由の詳細については、https://www.tidyverse.org/articles/2017/12/workflow-vs-script/を参照してください。

于 2018-02-08T09:37:17.630 に答える