我想從R內使用system2()調用一個簡單的python腳本。我讀過一些我發現含糊不清的信息,說如果使用了「太多」的內存,它將無法工作。在Rstudio內重新啓動R
如果我加載一個大型數據集並使用其中的某些信息作爲參數傳遞到system2(),它只有在我手動點擊調用Rstudio中的「Restart R」時纔有效。
我想要什麼:
df <- read.csv('some_large_file.csv')
###extracting some info called 'args_vec'
for(arg in args_vec){
system2('python', args)
}
這將無法正常工作的。 for循環簡單地通過。
我需要什麼:
df <- read.csv('some_large_file.csv')
###extracting some info called 'args_vec'
###something that 'restarts' R
for(arg in args_vec){
system2('python', args)
}
This answer沒有完全得到我想要的東西。也就是說,它在Rstudio中不適用於我,它稱之爲「系統」(在這種情況下,它表現出與「system2」相同的問題)。實際上,當我將上面提到的答案放在我的Rprofile.site文件中時,它剛剛立即關閉了rstudio:
我試過這個建議作爲一個普通函數(而不是使用「makeActiveBinding」,它並沒有工作。
##restart R in r session -- doesn't work
makeActiveBinding("refresh", function() { system("R --save"); q("no") }, .GlobalEnv)
##nor did this:
refresh <- function() { system("R --save"); q("no") }
我嘗試了一些上面這兩個選項的變化,但這需要很長什麼感覺就像一個簡單的問題,有很多我還不知道有關的啓動過程,「makeActiveBinding」是否有點神祕。任何人都可以指向正確的方向嗎?
你確定你確實需要重新啓動整個R嗎?如果使用'rm(list = ls())'來清理工作區,並且可能使用'gc()'手動垃圾收集以防萬一,這應該足夠了? – 2013-03-27 19:09:54
@BenHunter它會立即關閉RStudio,因爲您在重新啓動後調用'q'。取出呼叫到'q',它應該與在RStudio中選擇重新啓動R完全一樣。 – 2013-03-27 19:42:53
@Hemmo,我知道這是一個選項,在這種情況下,它可能是一個不錯的選擇,但我真的想知道如何解決這個問題,而不會丟失我的工作空間(或保存,刪除,然後重新加載它)。 – 2013-03-27 22:00:24