Tôi đang gặp vấn đề khi cố gắng sử dụng các đối tượng lớn trong R. Ví dụ:
> 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
Tôi hiểu rằng điều này có liên quan đến khó khăn trong việc có được các khối bộ nhớ liền kề (từ đây ):
Thông báo lỗi bắt đầu không thể phân bổ vectơ kích thước biểu thị lỗi không lấy được bộ nhớ, vì kích thước vượt quá giới hạn không gian địa chỉ cho một quy trình hoặc, nhiều khả năng, vì hệ thống không thể cung cấp bộ nhớ. Lưu ý rằng trên bản dựng 32 bit, có thể có đủ bộ nhớ trống, nhưng không phải là một khối không gian địa chỉ liền kề đủ lớn để ánh xạ nó.
Làm sao để tôi có được xung quanh này? Khó khăn chính của tôi là tôi đến một điểm nhất định trong kịch bản của mình và R không thể phân bổ 200-300 Mb cho một đối tượng ... Tôi thực sự không thể phân bổ trước khối vì tôi cần bộ nhớ để xử lý khác. Điều này xảy ra ngay cả khi tôi khéo léo loại bỏ các vật thể không cần thiết.
EDIT: Có, xin lỗi: Windows XP SP3, RAM 4Gb, 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
và Free
bộ nhớ, nhưng tôi nghi ngờ đây không phải là điều mà Benjamin đang làm.