Skip to content

[R-es] ¿Pasar parámetros por referencia?

12 messages · Servicio de Estadísticas Demográficas y Sociales, Carlos Ortega, Carlos J. Gil Bellosta +3 more

#
On Wed, 28 Sep 2011 13:53:19 +0200,Servicio de Estadísticas Demográficas y Sociales <seds.ive en gmail.com> wrote:
Hay varios paquetes en CRAN que implementan diversas formas de acceso por
referencia. Pero, en tu caso, quizás el paquete "ff" (que deja las cosas
en disco, y accede sólo ---pero de forma muy rápida--- a lo necesario) te
sea más útil.
Puedes imitar parcialmente el comportamiento de variables globales usando
las reglas del scope, si no redefines la variable en el conjunto de
environments anidados, y si no la pasas como parámetro de tu función. Y
pudes cambiar esas variables globales con assign, y similares.


Pero generalmente suele dar lugar a código difícil de mantener y debuggear.

Un saludo,


R.
#
Seguramente la respuesta es negativa, pero... ¿realmente necesitas
toda la matriz cargada a la vez? ¿No puedes procesarla por bloques,
por columnas, de alguna otra manera que no implique tenerla entera en
memoria?

Un saludo,

Carlos J. Gil Bellosta
http://www.datanalytics.com


El día 28 de septiembre de 2011 16:36, Servicio de Estadísticas
Demográficas y Sociales <seds.ive en gmail.com> escribió:
#
On Wed, 28 Sep 2011 15:40:43 +0200,Servicio de Estadísticas Demográficas y Sociales <seds.ive en gmail.com> wrote:
Pero he visto que luego comentas que los accesos a la matriz están
escritos por otra persona. Usar ff requeriría que re-escribieras parte del
código.
Sí, claro, puedes hacer assign de lo que sea, en el environment que elijas
(entiendo que te refieres al uso de variables globales). Pero el problema
de creación de copias intermedias existe. Y en la asignación a matrices, y
operaciones como 

x[, i] <- lo.que.sea




puede haber muchas más copias intermedias de las que uno esperaría,
incluyendo copias intermedias de la totalidad de x. El último libro de
Chambers, creo, explica esto con cierto detalle.


Vaya, toquetear cachos de matrices (y vectores) suele ser caro, sobre todo
si se hace varias veces.




R.

  
    
1 day later
#
On Wed, 28 Sep 2011 21:56:09 +0200,Servicio de Estadísticas Demográficas y Sociales <seds.ive en gmail.com> wrote:
Usar ff requerirá ciertos cambios en el código,, y tendrás que tener
cuidado con guardar los resultados (ff escribe a disco, pero no es
directamente un objeto .RData). Es más trabajo si quieres mover resultados
entre máquinas.
Con ff no tienes a tu disposición todas las operaciones que hay en R con
matrices.
Exacto.




Quizás una solución expeditiva sea moverse a una máquina con mucha más RAM
;-).


R.