2011-06-23 8 views
22

Quiero hacer una función que importa datos en diferentes números de lotes en función de la cantidad de RAM disponible en el sistema de alguien. ¿Pero cómo puedo encontrar la cantidad de RAM disponible en R? Puedo usar memory.size() pero eso solo funciona para Windows.Cómo comprobar la cantidad de memoria RAM en I

+3

Usted no se va a poner en práctica un método para hacer esto. Vas a tener que detectar la plataforma y luego usar diferentes métodos. –

+0

* "Si tiene que solicitar el precio, no puede pagarlo". * Este enfoque es incorrecto ya que el sistema operativo maneja la administración de recursos y memoria. Como dijo Ramhound, su enfoque dependerá de la plataforma. –

+3

La idea es obtener un valor crudo que funcione de manera predeterminada. Por ejemplo, 1 lote con 12 gb, 2 con 6 gb, etcétera. La plataforma se puede encontrar con 'Sys.info()' para que el enfoque dependiente de la plataforma sea posible, ¿verdad? –

Respuesta

24

Teniendo en cuenta las advertencias sobre la plataforma de la dependencia discutido en el comentario anterior, se podría, por ejemplo, analizar /proc/meminfo en Linux:

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

puede probar con el segundo enfoque a través de system(..., intern=TRUE), o incluso a través de una conexión de tubería.

Editar algunos años más tarde 5+: En R, y justo después de lo que el párrafo anterior insinuó:

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

Recomiendo usar 'gc()' antes de llamar a esta función para obtener la verdadera cantidad de memoria disponible. –

+0

¿Los bytes de la unidad de salida? R en las ventanas por lo general especifica –

+2

para aquellos que prefieren código de copia-pasteable: 'as.numeric (sistema ("awk '/ MemFree/{print $ 2}'/proc/meminfo", interno = TRUE))' – MichaelChirico

Cuestiones relacionadas