Ich habe Probleme beim Versuch, große Objekte in R zu verwenden. Zum Beispiel:
> memory.limit(4000)
> a = matrix(NA, 1500000, 60)
> a = matrix(NA, 2500000, 60)
> a = matrix(NA, 3500000, 60)
Error: cannot allocate vector of size 801.1 Mb
> a = matrix(NA, 2500000, 60)
Error: cannot allocate vector of size 572.2 Mb # Can't go smaller anymore
> rm(list=ls(all=TRUE))
> a = matrix(NA, 3500000, 60) # Now it works
> b = matrix(NA, 3500000, 60)
Error: cannot allocate vector of size 801.1 Mb # But that is all there is room for
Ich verstehe, dass dies mit der Schwierigkeit zusammenhängt, zusammenhängende Speicherblöcke (von hier ) zu erhalten:
Fehlermeldungen, die beginnen, können keinen Größenvektor zuweisen, was darauf hinweist, dass der Speicher nicht abgerufen werden kann, entweder weil die Größe die Adressraumgrenze für einen Prozess überschritten hat oder wahrscheinlicher, weil das System den Speicher nicht bereitstellen konnte. Beachten Sie, dass bei einem 32-Bit-Build möglicherweise genügend freier Speicher verfügbar ist, jedoch nicht genügend zusammenhängender Adressraumblock, um ihn zuzuordnen.
Wie kann ich das umgehen? Meine Hauptschwierigkeit besteht darin, dass ich zu einem bestimmten Punkt in meinem Skript komme und R einem Objekt keine 200-300 MB zuweisen kann ... Ich kann den Block nicht wirklich vorab zuweisen, da ich den Speicher für andere Verarbeitungen benötige. Dies geschieht auch dann, wenn ich nicht benötigte Objekte sorgfältig entferne.
BEARBEITEN: Ja, Entschuldigung: Windows XP SP3, 4 GB RAM, R 2.12.0:
> sessionInfo()
R version 2.12.0 (2010-10-15)
Platform: i386-pc-mingw32/i386 (32-bit)
locale:
[1] LC_COLLATE=English_Caribbean.1252 LC_CTYPE=English_Caribbean.1252
[3] LC_MONETARY=English_Caribbean.1252 LC_NUMERIC=C
[5] LC_TIME=English_Caribbean.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
Calloc
und Free
speichern, aber ich vermute, das ist nicht das, was Benjamin tut.