如何将R设置为默认选项?

时间:2013-04-11 10:49:35

标签: r

我总是用:

开始我的脚本
rm(list=ls())

清除我的工作区以避免不同脚本之间的冲突。但是,我正在寻找一种方法来将所有已更改的选项设置为其默认状态。例如,在某些脚本中,我需要通过设置来更改SS类型:

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

在其他脚本中,我需要使用默认选项(因为它是默认选项,我不直接指定),即:

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

但是如果之前刚刚使用过具有更改选项的脚本,那么选项显然会在没有注意到的情况下进行更改。

是否有一个命令可以放在我的脚本之上,将R重置为默认选项?

4 个答案:

答案 0 :(得分: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在主脚本中加载它们。

答案 1 :(得分:1)

如果您使用Rstudio项目功能,您将立即解决所有问题。 有关为什么要避免使用rm(list = ls())

的详细信息,请参阅https://www.tidyverse.org/articles/2017/12/workflow-vs-script/

答案 2 :(得分:1)

这是一个轻松优雅的单行不需要需要任何手动检索默认值:

invokevirtual

这是如何工作的:

default_opts <- callr::r(function(){options()}); options(default_opts) 是devtools随附的软件包(因此,如果您已安装devtools,您将已经拥有callr

callr只需启动一个后台进程,因此我们可以使用callr::r检索默认选项,并将其返回到当前的R会话

示例

options()

答案 3 :(得分:0)

人们普遍认为以下内容可以避免脚本之间的冲突。

rm(list=ls())

不会。如果您不相信这一点,请尝试以下

library(dplyr)
library(raster)

rm(list = ls())

library(dplyr)

tibble::tibble(x = 1:10, y = 1:10) %>% 
  select(x)

select应该来自dplyr。但这是来自栅格。原因? rm(list = ls())不会删除已加载的库。