我怎样才能让我的R对话香草?(How can I make my R session vanilla

2019-07-31 19:59发布

这是一个后续的澄清先前的问题, 我如何能确保在同一台服务器上的不同用户之间一致的[R环境?

我想从内部R,例如,类似于什么,如果我用命令启动R I将获得进入“香草” R会话R --vanilla 。 例如,我想编写不是由一个特定用户的自定义设置愣了脚本。

特别是,我想以下

  • 不读取R的历史,概况,或环境文件
  • 不重新从以前的会话数据或对象

help("vanilla")不返回任何东西,我不与自定义设置范围,知道如何摆脱他们都足够熟悉。

有没有办法进入新的,香草的环境? ( ?new.env似乎并没有帮助)

Answer 1:

你不能只让你的当前会话香草,但你可以从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") 


Answer 2:

恕我直言, 重复性研究互动环节不顺利起来。 你应该考虑写可执行脚本从命令行调用,而不是从打开的交互会话。 在脚本的顶部添加--vanilla的家当:

#!/path/to/Rscript --vanilla

如果你的脚本需要读取输入(参数或选项),你可以使用?commandArgs或两个包的一个getoptoptparse的命令行解析他们。

如果用户真正需要做自己的工作,在交互式会话,那么他仍然可以做到这一点,并通过调用你的脚本system()你的脚本将仍然使用自己的香草会议。 只是有一点点额外的工作,各地通过输入和输出。



文章来源: How can I make my R session vanilla?
标签: r environment