你不能只讓你的當前會話香草,但你可以從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")
您能澄清您的預期用例嗎?我無法從你的問題中得知,所討論的腳本是從現有R會話還是直接從命令行運行。 – joran
[This link](http://stackoverflow.com/a/12323852/967840)可能是相關 – GSee
@joran我希望爲有問題的腳本確保我可以在腳本中控制的標準環境,與if該腳本從命令行運行或在現有R會話中使用'source'調用;無論如何,我無法確保它將在香草環境中運行。 –