2009-08-06 25 views
92

Estoy hurgando en los manuales, quería preguntarle a la comunidad: ¿Cómo podemos establecer variables globales dentro de una función?Variables globales en R

Pregunta-2: En cuanto a trazado,

estoy usando el trazado de gráficos múltiples en una sola hoja, y para diferenciar cada uno de ellos, quiero añadir un título para cada uno de ellos. ¿Alguien puede decirme cómo puedo lograr esto?

Respuesta

119

Usar un post por cuestión principal.

  1. Como le mostró la primera respuesta con assign(), hay una manera de asignar en el entorno global. A más corto (pero no mejor ... seguir con Asignar) forma más simple, es utilizar el operador <<-, es decir

    a <<- "new" 
    

    dentro de la función.

  2. Para sus parcelas, use main="My title here" para cada parcela. Use algo como par(mar=c(3,3,3,1)) para dar espacio suficiente.

+23

Este enfoque en realidad no se guarda en el entorno global, sino en el ámbito primario. A veces, el alcance principal será el mismo que el entorno global, aunque en algunos casos con muchas funciones anidadas no lo hará. – LunaticSoul

57

Dan Goldstein proporciona un motor de búsqueda para R que le brinda respuestas rápidas a preguntas como el establecimiento de variables globales. Para las variables globales hay una solución en un mailinglist posting:

a <- "old" 
test <- function() { 
    assign("a", "new", envir = .GlobalEnv) 
} 
test() 
a # display the new value 
7

¿Por qué intenta crear variables globales desde el interior de una función? Es muy poco probable que sea una buena idea y debe publicar más detalles sobre lo que está tratando de lograr.

+0

Soy muy nuevo en la programación de R, y por lo tanto uso de globales para pasar como parámetros ;-) ... También estoy aprendiendo el paso de parámetros y cosas así ... ¡¡lentamente !! Por cierto, estoy tratando de establecer una variable global dentro de mi función, y ** no ** crearlo. – Alphaneo

+8

¿Qué hay de querer almacenar en caché un objeto que es costoso de calcular? Nike <- (! $ CostlyProduct ID == $ blob ID) función (blob) {{ \t si \t \t # computan producto costoso \t \t Asignar ("costlyProduct", "x", envir = .GlobalEnv) \t} \t # procesado barato en costlyProduct } ¿Cuál podría ser una solución de almacenamiento en caché más agradable, me pregunto? – tim

+4

Eche un vistazo al paquete de memora – hadley