Réponses:
Comme le assign()
montre la réponse de Christian , il existe un moyen d'attribuer dans l'environnement global. Une manière plus simple, plus courte (mais pas meilleure ... s'en tenir à assign) consiste à utiliser l' <<-
opérateur, c'est-à-dire
a <<- "new"
à l'intérieur de la fonction.
assign
préféré <<-
?
<<-
recherchera dans la chaîne de boîtiers jusqu'à l'environnement global et affectera la première variable correspondante qu'il trouve. En théorie, si vous avez une fonction f()
imbriquée dans une fermeture g()
et a
existe dans g()
, l'utilisation de a <<-
in f()
affectera a
in g()
, et non l'environnement global. Cependant, c'est souvent ce que vous voulez.
J'ai trouvé une solution pour définir une variable globale dans une publication de liste de diffusion via assign :
a <- "old"
test <- function () {
assign("a", "new", envir = .GlobalEnv)
}
test()
a # display the new value