[R-es] Alternativas a uso de variables globales

J. Miguel Marin jmmarin en est-econ.uc3m.es
Jue Jul 8 12:59:01 CEST 2010


Hola a tod en s,

tengo una duda que se relaciona con alternativas al uso de variables globales.

En principio, si se quiere usar un generador de v.a con la librería 
Runuran sólo se permite definir las funciones de densidad (o el núcleo 
de las mismas) con funciones con un único argumento en (x).

Sin embargo, necesito pasar a las funciones más argumentos que van 
cambiando en las iteraciones de un ciclo largo, dado que estas v.a. 
dependen de otras en un muestreador de Gibbs (esto es sólo un detalle). 
El único modo que se me ocurre es mediante variables globales usando el 
operador "<<-"
Sin embargo, esto tiene muy mala fama entre los gurús de la programación.

Un ejemplo naif de lo que digo sería el siguiente:

#................................................................
# asignas cte como variable global
cte <<- -0.5

# Defines el nucleo de una densidad normal en funcion de x solo
pdf <- function (x) { exp(cte*x^2) }

# Generas una muestra de tamaño 100 de una distribucion normal con Runuran
library(Runuran)
gen <- tdr.new(pdf=pdf, lb=-Inf, ub=Inf)
x <- ur(gen,100)
plot(density(x))
#................................................................

¿Sabeis de algún modo mejor de hacerlo, sin usar "<<-"?

Y saludos

jm~

_______________________________

        J. Miguel Marin

http://www.est.uc3m.es/jmmarin

    Dep. of Statistics
University Carlos III of Madrid
        Spain (E.U.)



Más información sobre la lista de distribución R-help-es