Risposte:
Come assign()
mostra la risposta di Christian con gli spettacoli, c'è un modo di assegnare nell'ambiente globale. Un modo più semplice, più breve (ma non migliore ... attenersi con l'assegnazione) consiste nell'utilizzare l' <<-
operatore, ad es
a <<- "new"
all'interno della funzione.
assign
preferito <<-
?
<<-
cercherà la catena di recinti fino all'ambiente globale e assegnerà alla prima variabile corrispondente che trova. Ipoteticamente, se si ha una funzione f()
nidificata in una chiusura g()
ed a
esiste in g()
, l'utilizzo di a <<-
in f()
assegnerà a a
in g()
, non all'ambiente globale. Spesso, questo è quello che vuoi, comunque.
Ho trovato una soluzione su come impostare una variabile globale in un post di mailinglist tramite assegnazione :
a <- "old"
test <- function () {
assign("a", "new", envir = .GlobalEnv)
}
test()
a # display the new value