2013-03-27 16 views
24

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?

+0

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ć? –

+0

@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. –

+0

@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). –

Odpowiedz

0

Czy próbowałeś osadzić wywołanie funkcji w t stosuje funkcję, a nie pętlę for?

Otrzymałem kilka kawałków kodu, które uruchamiały system z pamięci w pętli for działającej idealnie z zastosowaniem. To może pomóc?

39

W Rstudio, można ponownie uruchomić sesję R przez:

command/ctrl + shift + F10 

Można również użyć:

.rs.restartR() 
+1

to nie odpowiada na pytanie, ponieważ wydaje się, że chce linii poleceń – Arthur

5

RStudio ma to nieudokumentowane rs.restartR() która ma nie tylko to: Ponowne R.

Jednak nie rozładowuje załadowanych pakietów ani nie oczyszcza środowiska, więc mam pewne wątpliwości, czy w ogóle uruchomi ponownie R.

+0

Uwolni to wszystko, co kiedyś zużyto, a później zostało wydane ... więc robi coś (bardzo przydatne w niektórych przypadkach). –

Powiązane problemy