2011-06-23 31 views
22

Tôi muốn tạo một hàm nhập dữ liệu theo các số lô khác nhau tùy thuộc vào lượng RAM có sẵn trên hệ thống một ai đó. Nhưng làm thế nào tôi có thể tìm thấy số lượng RAM có sẵn trong R? Tôi có thể sử dụng memory.size() nhưng chỉ hoạt động cho Windows.Cách kiểm tra số lượng RAM trong R

+3

Bạn sẽ không phải thực hiện một phương pháp để làm điều này. Bạn sẽ phải phát hiện nền tảng sau đó sử dụng các phương pháp khác nhau. –

+0

* "Nếu bạn phải yêu cầu mức giá, bạn không thể mua được." * Điều này có vẻ là cách tiếp cận sai vì bộ nhớ và quản lý tài nguyên được xử lý bởi hệ điều hành. Như Ramhound nói, cách tiếp cận của bạn sẽ trở nên phụ thuộc vào nền tảng. –

+3

Ý tưởng là để có được một giá trị thô hoạt động như một mặc định. Ví dụ: 1 lô với 12gb, 2 với 6gb, v.v. Nền tảng có thể được tìm thấy với 'Sys.info()' để tiếp cận phụ thuộc nền tảng nên có thể đúng không? –

Trả lời

24

Với những lời cảnh báo liên quan đến nền tảng phụ thuộc được thảo luận trong các bình luận trước đó, bạn có thể cho ví dụ phân tích /proc/meminfo trên Linux:

$ grep MemFree /proc/meminfo 
MemFree:   573660 kB 
$ awk '/MemFree/ {print $2}' /proc/meminfo 
565464 

Bạn có thể thử phương pháp thứ hai qua system(..., intern=TRUE), hoặc thậm chí thông qua một kết nối đường ống.

Sửa một số 5 năm sau: Trong R, và chỉ sau những gì đoạn trước ám chỉ:

R> memfree <- as.numeric(system("awk '/MemFree/ {print $2}' /proc/meminfo", 
+        intern=TRUE)) 
R> memfree 
[1] 3342480 
R> 
+0

Tôi khuyên bạn nên sử dụng 'gc()' trước khi gọi hàm này để nhận được số lượng bộ nhớ khả dụng thực sự. –

+0

Là byte đơn vị đầu ra? R trong cửa sổ thường chỉ định –

+2

cho những người thích mã có thể sao chép có thể sao chép: 'as.numeric (hệ thống (" awk '/ MemFree/{print $ 2}'/proc/meminfo ", intern = TRUE))' – MichaelChirico

Các vấn đề liên quan