Próbuję wywołać prosty skrypt Pythona z wnętrza R przy użyciu system2(). Czytałem niektóre informacje, które uważałem za mało precyzyjne, mówiąc, że jeśli użyje się "za dużo" pamięci, to nie zadziała.Restart R w Rstudio
Jeśli załaduję duży zbiór danych i użyję w nim pewnych informacji, które będą używane jako argumenty do przejścia do system2(), będzie działać tylko wtedy, gdy ręcznie kliknę "Restart R" w wywołaniu Rstudio.
Czego chcę:
df <- read.csv('some_large_file.csv')
###extracting some info called 'args_vec'
for(arg in args_vec){
system2('python', args)
}
To nie będzie działać tak jak jest. Pętla for jest po prostu pominięta.
Co potrzebne:
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 nie całkiem to, czego chcę. Mianowicie, nie działa dla mnie w Rstudio i nazywa się "system" (który w tym przypadku przedstawia taki sam problem jak "system2"). W rzeczywistości, kiedy umieściłem odpowiedź wymienioną powyżej w moim pliku Rprofile.site, to natychmiast zamknęło rstudio:
Próbowałem sugestii jako normalnej funkcji (zamiast używać "makeActiveBinding", i to nie działało zupełnie .
##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") }
próbowałem wiele odmian tych dwóch powyższych opcji, ale to jest coraz długo, co czuje się jak proste pytanie. jest wiele jeszcze nie zrozumieć o procesie uruchamiania i „makeActiveBinding” jest trochę tajemniczy.Czy ktoś może wskazać mi właściwy kierunek?
Czy na pewno chcesz zrestartować cały R? Jeśli używasz 'rm (list = ls())', który czyści obszar roboczy i może ręczne usuwanie pamięci z 'gc()' na wszelki wypadek, to powinno wystarczyć? –
@BenHunter natychmiast zamyka RStudio, ponieważ po ponownym uruchomieniu wywołujesz 'q'. Usuń wywołanie 'q' i powinno to zrobić dokładnie to samo, co wybranie Restart R w RStudio. –
@Hemmo, wiem, że to opcja, i w tym przypadku może to być dobry wybór, ale naprawdę chciałbym wiedzieć, jak to rozwiązać, tak jak to, bez utraty mojego obszaru roboczego (lub zapisywania, usuwania, a następnie ponownego ładowania) to). –