Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将R设置为默认选项?_R - Fatal编程技术网

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

如何将R设置为默认选项?,r,R,我总是以以下内容开始我的脚本: rm(list=ls()) 清除我的工作区以避免不同脚本之间的冲突。但是,我正在寻找一种方法,将所有更改的选项也设置为默认状态。例如,在某些脚本中,我需要通过设置来更改SS类型: options(contrasts=c(unordered="contr.sum", ordered="contr.poly")) 在其他脚本中,我需要使用默认选项(因为它是默认的,所以我不直接指定它),即: 但是,如果之前刚刚使用过带有更改选项的脚本,那么在我没有注意到的情况下,该

我总是以以下内容开始我的脚本:

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

options(contrasts=c(unordered="contr.sum", ordered="contr.poly"))
在其他脚本中,我需要使用默认选项(因为它是默认的,所以我不直接指定它),即:

但是,如果之前刚刚使用过带有更改选项的脚本,那么在我没有注意到的情况下,该选项显然已更改


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

就像@chl所说的,你可以将默认选项保存在某个地方,例如,在
Rdata
文件中,使用
save

default_options = options()
save(default_options, file = "default_options.rda")
现在,您可以从文件中加载这些默认值并应用它们:

load("default_options.rda")
options(default_options)
但是,我建议不要连续运行R脚本。相反,如果脚本之间有共享功能,只需创建捕获该功能的函数即可。然后,您使用的脚本始终是自包含的,不受其他以前运行的脚本的影响。然后,您设置的任何选项都是该脚本的本地选项,无需清空工作区或将选项设置为默认值


请注意,我也从不保存我的工作环境,我总是使用原始数据和转换原始数据的脚本来重建我的环境。如果有需要花费大量时间的部分,我将它们放在单独的脚本中,最后使用
save
保存
Rdata
文件。然后,我使用
load

将它们加载到主脚本中。如果您使用Rstudio项目功能,您将立即解决所有问题。
有关为什么应该避免rm(list=ls())的更多详细信息,请参见这里有一个简单而优雅的单行线,它不需要手动检索默认值:

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

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

rm(list=ls())
不会的。如果您不相信这一点,请尝试以下方法

library(dplyr)
library(raster)

rm(list = ls())

library(dplyr)

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

选择应来自dplyr。但它来自光栅。原因是什么
rm(list=ls())
不会删除加载的库。

是的,类似于,
op+1。我猜是你投票决定重新开业的。但如果不是这样的话,那就重新打开它,并在那里发布,因为它已经被浏览了很多次。
rm(list=ls())
library(dplyr)
library(raster)

rm(list = ls())

library(dplyr)

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