So lösen Sie das Problem des "Schutz-Stack-Overflows" in R Studio

8

Ich versuche, ein Modell mit dem Glmnet-Paket zu erstellen, aber ich erhalte den folgenden Fehler, wenn ich die folgende Zeile führe:

%Vor%

Ich weiß, dass dies auf meine große Anzahl von Variablen (26k +) im Datenrahmen zurückzuführen ist. Wenn ich weniger Variablen verwende, wird der Fehler nicht angezeigt. Ich weiß, wie man das in der Befehlszeile R löst, aber ich muss in R Studio bleiben, also möchte ich es aus R Studio reparieren. Also, wie mache ich das?

    
Ansjovis86 28.09.2015, 15:44
quelle

2 Antworten

1

@ Ansjovis86

Sie können ppsize als Befehlszeilenargument für Rstudio

angeben %Vor%

Sie können auch die Expression-Option über Ihre .Rprofile oder zur Laufzeit mit dem Befehl options(expressions = 5e5) festlegen.

%Vor%

...

Ausdrücke:

legt ein Limit für die Anzahl verschachtelter Ausdrücke fest, die ausgewertet werden. Gültige Werte sind 25 ... 500000 mit Standard 5000. Wenn Sie es erhöhen, möchten Sie vielleicht auch R mit einem größeren Schutzstapel starten; siehe --max-ppsize im Speicher. Beachten Sie auch, dass ein Überlauf des C-Stacks zu einem segfault führen kann, und in Betriebssystemen, in denen dies möglich ist, möchten Sie dies möglicherweise erhöhen. Sobald das Limit erreicht ist, wird ein Fehler ausgelöst. Die aktuelle Nummer in der Auswertung kann durch Aufruf von Cstack_info gefunden werden.

%Vor%     
Technophobe01 28.09.2017 20:11
quelle
0

Die Hauptursache ist die Funktion model.matrix , die 1) viel Speicher verwendet; und 2) diesen Fehler für eine ausreichend große Nr. werfen. von Spalten.

Versuchen Sie es mit meinem Paket glmnetUtils, das beide Probleme löst. Anstatt die Modellmatrix auf einmal zu erstellen, macht sie das Wort für Wort; und es versucht auch nicht, große Formeln zu bewerten. Dies ist ein Los schneller und riskiert nicht, den Stapel zu sprengen.

%Vor%     
Hong Ooi 28.09.2017 20:56
quelle

Tags und Links