R Größenvektor kann nicht zugeordnet werden

Sheeraz Gul 15 Februar 2024
  1. R Größenvektor kann nicht zugeordnet werden
  2. Lösung 1: Garbage Collection mit gc()
  3. Lösung 2: Erhöhen Sie das Speicherlimit
R Größenvektor kann nicht zugeordnet werden

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.

    R-Eigenschaften

  • Sobald Sie die Eigenschaften aufgerufen haben, gehen Sie zur Registerkarte Verknüpfung und suchen Sie nach dem Feld Ziel.

    Zielfeld für R-Eigenschaften

  • Fügen Sie die folgende Zeile am Ende des Zielfelds hinzu.
    --max-mem-size=45000M--max-vsize=45000M
    

    R-Eigenschaften erhöhen den Arbeitsspeicher

  • Die obige Zeile erhöht den Speicher auf 45000 MB, was mehr als 37,3 GB ist. Das vsize 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 Gul avatar Sheeraz Gul avatar

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

Verwandter Artikel - R Error