R Größenvektor kann nicht zugeordnet werden
- R Größenvektor kann nicht zugeordnet werden
-
Lösung 1: Garbage Collection mit
gc()
- Lösung 2: Erhöhen Sie das Speicherlimit
Dieses Tutorial demonstriert den Fehler r kann den Größenvektor nicht zuweisen
.
R Größenvektor kann nicht zugeordnet werden
Der Fehler Größenvektor kann nicht zugewiesen werden
tritt in R auf, wenn wir versuchen, mit einer großen Datenmenge umzugehen. Dieser Fehler ist kein Syntaxfehler, sondern ein logischer Fehler, der auftritt, wenn mit einer extrem großen Datenmenge gearbeitet wird, da er eine große Menge an virtuellem Speicher verwendet.
Meistens tritt dieser Fehler auf, wenn die Daten aus einer externen Quelle wie einem Paket oder einer anderen Datei geladen werden. Wenn der Compiler die Größe des Objekts nicht steuern kann, gibt er den Fehler Größenvektor kann nicht zugewiesen werden
aus.
Der Fehler Größenvektor kann nicht zugewiesen werden
tritt auf, wenn wir einen Vektor des Objekts erstellen oder eine Funktion laden. Dieser Fehler kann auch bei kleineren Objekten auftreten, wenn wir viele kleinere Objekte haben.
Der Fehler hat zwei Lösungen, die gc()
und memory.limit()
, wobei die gc()
nicht in jeder Situation funktioniert. Wir demonstrieren beide Methoden in diesem Tutorial.
Lösung 1: Garbage Collection mit gc()
Garbage Collection ist die erste Lösung, die mir in den Sinn kommt; Es gibt einen Fehler Größenvektor kann nicht zugeordnet werden
, und es funktioniert in vielen Situationen. Aber der GC wird nicht funktionieren, wenn die Datenmenge viel größer ist.
Die Methode gc()
wird für die Garbage Collection in R verwendet. Probieren wir ein Beispiel aus, das diesen Fehler wirft und versuchen ihn dann mit gc()
zu lösen.
demo <- rnorm(5000000000)
Der obige Code erstellt einen Vektor aus zufällig verteilten Werten und sollte laut unserem System den Fehler cannot allocate vector of size
ausgeben. Siehe die Ausgabe:
Error: cannot allocate vector of size 37.3 Gb
In addition: Warning message:
In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE, :
there is no package called 'Matrix'
Wie wir sehen, benötigt der Compiler die Erinnerung an den Fehler: cannot allocate vector of size 37.3 Gb
, was für unser System nicht möglich ist. Lassen Sie uns nicht versuchen, GC und dann diesen Code erneut auszuführen.
# Run GC
gc()
# Run the above code
demo <- rnorm(5000000000)
Der obige Code führt die GC aus und versucht dann, den Code erneut auszuführen. Wenn nach GC ein Speicher von 37.3
GB vorhanden ist, wird der Fehler behoben; Andernfalls wird der Fehler immer noch ausgegeben. Siehe die Ausgabe:
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 1004541 53.7 2078938 111.1 1255027 67.1
Vcells 2577662 19.7 8388608 64.0 2836345 21.7
Error: cannot allocate vector of size 37.3 Gb
Wie wir sehen können, wird immer noch derselbe Fehler ausgegeben, da der GC eine kleine Speichermenge löscht, die mehr benötigt. Das gc()
funktioniert also nur für kleine Situationen.
Lösung 2: Erhöhen Sie das Speicherlimit
Vor einiger Zeit konnten wir das Speicherlimit in R mit dem Attribut memory.limit()
mit dem Attribut size
erhöhen, wodurch der Fehler cannot allocate vector of size
auch bei großen Datenmengen behoben wurde. Aber diese Methode wird in R nicht mehr unterstützt, und gemäß der R-Dokumentation können wir den Speicher über die Betriebssystemoption erhöhen.
Befolgen Sie den schrittweisen Prozess, um den Speicher zu vergrößern, wodurch der Fehler Größenvektor kann nicht zugewiesen werden
behoben wird.
-
Stellen Sie zunächst sicher, dass RStudio geschlossen ist.
-
Suchen Sie nun die R-Programmverknüpfung und klicken Sie mit der rechten Maustaste darauf, um zu den
Eigenschaften
zu gelangen. -
Sobald Sie die
Eigenschaften
aufgerufen haben, gehen Sie zur RegisterkarteVerknüpfung
und suchen Sie nach dem FeldZiel
. -
Fügen Sie die folgende Zeile am Ende des Zielfelds hinzu.
--max-mem-size=45000M--max-vsize=45000M
-
Die obige Zeile erhöht den Speicher auf
45000
MB, was mehr als 37,3 GB ist. Dasvsize
in der oberen Zeile kennzeichnet die Vektorgrösse. -
Nachdem Sie den maximalen Speicher und die maximale Vektorgröße festgelegt haben, öffnen Sie RStudio und führen Sie den folgenden Code aus:
demo <- rnorm(5000000000)
Nun wird dieser Code einen Vektor namens demo
auslösen und erstellen. Die Größe 37,3 GB ist zu groß; Ihr Computer kann hängen bleiben, wenn er den Speicher nicht unterstützt.
Aber immer wenn der Fehler Größenvektor kann nicht zugewiesen werden
auftritt, können wir ihn mit dieser Methode lösen.
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook