[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