it-swarm.com.de

Starten Sie R innerhalb von Rstudio neu

Ich versuche ein einfaches Python-Skript mit system2 () aus R heraus aufzurufen. Ich habe einige Informationen gelesen, die ich vage fand und besagte, wenn "zu viel" Speicher verwendet wird, funktioniert das nicht. 

Wenn ich ein großes Dataset lade und einige Informationen darin verwende, um es als Argumente für das Übergeben an system2 () zu verwenden, funktioniert es nur, wenn ich manuell in Rstudio auf "Restart R" klicke. 

Was ich möchte:

df <- read.csv('some_large_file.csv')
###extracting some info called 'args_vec'
for(arg in args_vec){
    system2('python', args)
}

Das funktioniert nicht so wie es ist. Die for-Schleife wird einfach übergangen.

Was ich brauche:

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)
}

Diese Antwort bekommt nicht ganz das, was ich will. Es funktioniert nämlich nicht für mich in Rstudio und ruft "System" auf (was in diesem Fall das gleiche Problem wie "System2" darstellt). Wenn ich die Antwort, auf die oben in meiner Rprofile.site-Datei verwiesen wird, einsetze, wurde rstudio sofort geschlossen:

Ich habe den Vorschlag als normale Funktion ausprobiert (anstatt "makeActiveBinding" zu verwenden), und es hat nicht ganz funktioniert.

##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") }

Ich habe eine Reihe von Variationen dieser beiden Optionen ausprobiert, aber das wird langwierig für eine einfache Frage. Es gibt vieles, was ich noch nicht über den Startvorgang verstehe, und "makeActiveBinding" ist etwas mysteriös. Kann mir jemand die richtige Richtung zeigen?

31
Ben Hunter

In Rstudio können Sie die R-Sitzung folgendermaßen neu starten:

command/ctrl + shift + F10 

Sie können auch verwenden:

.rs.restartR()
54
mgoldwasser

RStudio hat diese undokumentierte rs.restartR(), die genau das tun soll: Neustarten von R.

Es entlädt jedoch nicht die geladenen Pakete und reinigt auch nicht die Umgebung, so dass ich einige Zweifel habe, ob R überhaupt neu gestartet wird.

8
Arthur

Haben Sie versucht, den Funktionsaufruf in die Apply-Funktion anstatt in eine for-Schleife einzubetten?

Ich hatte ein paar Teile des Codes, die das System in einer for-Schleife perfekt mit Apply ausführen ließen. Es könnte helfen?

0
Nathan Hatch