Respostas:
Como a resposta de Christian nos assign()
programas, existe uma maneira de atribuir no ambiente global. Uma maneira mais simples, mais curta (mas não melhor ... fique com a atribuição) é usar o <<-
operador, ou seja,
a <<- "new"
dentro da função.
assign
preferido <<-
?
<<-
pesquisará a cadeia de gabinetes até o ambiente global e atribuirá a primeira variável correspondente que encontrar. Hipoteticamente, se você tem uma função f()
aninhada em um fechamento g()
e a
existe em g()
, o uso de a <<-
in f()
será atribuído a a
in g()
, não ao ambiente global. Muitas vezes, porém, é isso que você deseja.
Encontrei uma solução para definir uma variável global em uma postagem da lista de discussão por meio de assign :
a <- "old"
test <- function () {
assign("a", "new", envir = .GlobalEnv)
}
test()
a # display the new value