2011-06-23 14 views
22

誰かのシステムで使用可能なRAMの量に応じて、バッチ数を変えてデータをインポートする機能を作りたいと思います。しかし、どのようにRの使用可能なRAMの量を見つけることができますか?私はmemory.size()を使うことができますが、それはWindowsのためだけに働きます。RAMの量を確認する方法

+3

。プラットフォームを検出してから、別の方法を使用する必要があります。 –

+0

*「価格を尋ねなければならないのであれば、それを買う余裕はありません」*これはメモリとリソース管理がオペレーティングシステムによって処理されるため、間違ったアプローチになります。 Ramhoundが述べたように、あなたのアプローチはプラットフォームに依存します。 –

+3

アイデアは、デフォルトとしてやや働いている原価を得ることです。例えば、12gbで1バッチ、6gbで2バッチなど。プラットフォームは 'Sys.info()'で見つけることができるので、プラットフォームに依存したアプローチが正しいはずですか? –

答えて

24

以前のコメントで述べた、プラットフォームに依存に関する警告を考えると、あなたは、例えば、Linux上/proc/meminfoを解析できます。

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

あなたはsystem(..., intern=TRUE)を経由して第二のアプローチを試してみてください、あるいはパイプ接続を介して可能性があります。

一部5+年後の編集:Rで、ちょうど前の段落をほのめかし何次:あなたはこれを行うための一つの方法を実装するつもりはありません

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

実際のメモリ使用量を得るには、この関数を呼び出す前に 'gc()'を使うことをお勧めします。 –

+0

出力単位バイトですか?ウィンドウ内のRは通常コピー可能なコードを好むものに対して –

+2

を指定します: 'as.numeric(system(" awk '/ MemFree/{print $ 2}'/proc/meminfo "、intern = TRUE))' – MichaelChirico

関連する問題