回答
取決於你如何啓動[R試着將這些行之一到您.Rprofile
文件:
makeActiveBinding("refresh", function() { shell("Rgui"); q("no") }, .GlobalEnv)
makeActiveBinding("refresh", function() { system("R"); q("no") }, .GlobalEnv)
然後進入R控制檯:
refresh
將關閉當前會話並啓動一個新的會話。
或'.Last < - function()系統(「R」)'或者甚至在關閉週期'reg中。終結器(.GlobalEnv,函數(e)系統(「R」),TRUE)'。然後'q()'不斷回來。 – 2011-06-11 21:57:25
這只是關閉R – hedgedandlevered 2014-04-11 13:23:04
確保R在您的PATH上。 – 2014-04-11 15:32:08
makeActiveBinding("refresh", function() { system(paste0(R.home(),"/bin/i386/R")); q("no") }, .GlobalEnv)
或--save --no或保存
paste0(R.home(),"/bin/i386/R --no-save")
我覺得這是你需要什麼,如果你調用刷新之前使用setwd()(儘管這也不是原來沒有版本適用於我,因爲它重新啓動R然後關閉自己,一個新的窗口永遠不會打開。如果有人可以對此發表評論,請這樣做)
當我嘗試這個時,打開一個新窗口,但舊窗口保持打開凍結狀態,直到新窗口關閉 – Matthew 2017-07-26 14:46:27
如果你在RStudio: 命令/ ctrl + shift + F10
您還可以使用
.rs.restartR()
我相信打開一個「乾淨的R會話「要求從當前會話中刪除1-Data;來自當前會話的2個包被卸載。 '.rs.restartR()'似乎沒有在我的機器上做這兩件事情之一。 – steadyfish 2016-05-06 13:58:19
我發現.rs.restartR()對於即使在刪除後R也不會釋放內存的情況很有用(list = ls ()); GC();。這絕對可以釋放內存。我也喜歡它不分離包的事實。 – 2017-04-20 17:09:49
我需要在Windows相同的刷新會議的功能,我結束了代碼稍加修改的版本:
makeActiveBinding("refresh", function() { shell(paste0("start \"\" \"", R.home(), "/bin/x64/Rgui.exe\"")); q("no") }, .GlobalEnv)
在Windows下你需要修改Rprofile.site
文件。它位於R的etc
目錄下。還要注意bin/x64
可以根據您的系統配置更改路徑的最後部分。我希望這也能幫助其他人。
我寫了下面的函數。 記住!您只能使用一次,然後在R會話重新啓動後必須重新加載它。
clc <- function() {
rm(list = ls(envir = globalenv()),envir = globalenv()) #clear Vars from global enviroment
gc() #grabage colector
cat("\014") #clc
.rs.restartR() #clear session
}
有時拆開包裝也有幫助。
符合馬丁摩根的想法使用.Last()
;這將重新啓動R中的同一組的命令行選項,以前被稱爲:
restart_r <- function(status = 0, debug = TRUE) {
if (debug) message("restart_r(): Customizing .Last() to relaunch R ...")
assign(".Last", function() {
args <- commandArgs()
system2(args[1], args = args[-1])
}, envir = globalenv())
if (debug) message("restart_r(): Quitting current R session and starting a new one ...")
quit(save = "no", status = status, runLast = TRUE)
}
舊的職位,但沒有一個答案相當的工作(對我來說,我使用的是Windows,還沒有測試等),所以我會添加我的解決方案。我的一些術語可能是在這裏下車,但這應該得到跨越點:
以上的答案不甚工作
這裏大部分提交的答案涉及使用shell
或system
這完全不是那麼回事因爲在他們打開新的R控制檯並指示原始控制檯關閉的同時,新控制檯是在舊控制檯的應用程序上下文中運行的進程。這意味着直到新的控制檯關閉時,原始控制檯才能關閉。上述一些用戶(例如hedged和lever)報告說,關閉原始控制檯會強制關閉新控制檯。當我嘗試時,新的控制檯確實打開,但舊的控制檯保持打開狀態,直到新的控制檯關閉。
基本問題是調用shell
或system
不會將應用程序上下文從原始控制檯更改爲新控制檯,因此原始進程無法終止,直到新控制檯關閉。
的替代方案,爲我的作品
而是使用shell.exec
這通常會被用來打開基於文件類型的默認應用程序的文件。當在.exe上使用時,它顯然會運行可執行文件。但是,重要的區別在於系統在它自己的獨立上下文中啓動應用程序。因此,這裏是爲我的作品的代碼:
makeActiveBinding("restart.R", function() { shell.exec(paste0(R.home(),"/bin/x64/Rgui.exe")); q("no") }, .GlobalEnv)
你需要什麼,你用它來啓動R.你只是把這個線你.Rprofile
文件進行編輯的文件路徑/bin/x64/Rgui.exe
匹配,那麼你可以把它叫做在您的R代碼中輸入restart.R
。
與其他方法相比,這種方法的缺點是不能像--no-save
那樣傳遞命令行參數,只需要使用shell
即可,但至少可以讓您關閉原始R進程。
- 1. PM2不會在乾淨的出口重新啓動
- 2. 在Rstudio內重新啓動R
- 3. 刷新/重新啓動PowerShell會話無法退出
- 4. 蘋果腳本重新啓動並重新啓動後退出應用程序
- 5. TokyoTyrant - 使用乾淨的數據存儲重新啓動
- 6. 使用R代碼重新啓動rsession
- 7. r; opencpu不會啓動
- 8. 執行退出R會話的自定義命令
- 9. 如何讓Zeppelin在EMR集羣上乾淨地重新啓動?
- 10. LoadRunner:迭代時出錯,退出Vuser並重新啓動Vuser
- 11. 從R輸出新的R代碼
- 12. 乾淨地退出C函數
- 13. Tkinter的循環永遠不會乾淨地退出
- 14. 在RStudio中退出R會話而不離開RStudio
- 15. R:在會話啓動時自動加載庫
- 16. 如何識別並終止在R會話中啓動的所有線程
- 17. R Shiny App用戶會話內存
- 18. 一個乾淨的格式
- 19. ShellExecute async(從C++內部啓動程序並立即退出)
- 20. 乾淨的Linux安裝後,MongoDB不會啓動
- 21. 每次重新啓動R會話時,如何避免從腳本中消失「±」符號?
- 22. 啓動新鮮或乾淨的eclipse實例
- 23. Markdown並勾勒出一個R腳本
- 24. 如何從另一個會話中調用/使用r對象?
- 25. 退出HttpClient會話
- 26. 新的會話啓動兩會
- 27. 如何重新啓動一個循環與Eval在R中超時?
- 28. Response.Redirect是否使用相同的會話或啓動一個新的會話?
- 29. R:計算若干因素中的R
- 30. Android後退按鈕不會重新啓動活動?
那麼你可以用'rm(list = ls())'清理你的工作空間,但那不是你的意思吧? – 2011-06-11 09:01:37
你是否也想分離你可能附帶的任何軟件包和其他東西? – Spacedman 2011-06-11 09:15:58
也許一個建議是將一個新選項'save'參數添加到'q()',如''r「',它可以在不保存工作空間的情況下重新啓動R。那麼'q(「r」)'的別名可以分配給一個新的函數,該函數可以重新啓動R. – Greg 2011-06-11 22:35:25