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.
assignpreferido <<-?
<<-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 aexiste em g(), o uso de a <<-in f()será atribuído a ain 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