Un post qui su un giorno indietro mi chiede come assegnare valori a più oggetti nell'ambiente globale all'interno di una funzione. Questo è il mio tentativo di utilizzare lapply
(assign
potrebbe essere più sicuro di <<-
ma non l'ho mai effettivamente utilizzato e non ho familiarità con esso).Assegna più oggetti a .GlobalEnv dall'interno di una funzione
#fake data set
df <- data.frame(
x.2=rnorm(25),
y.2=rnorm(25),
g=rep(factor(LETTERS[1:5]), 5)
)
#split it into a list of data frames
LIST <- split(df, df$g)
#pre-allot 5 objects in R with class data.frame()
V <- W <- X <- Y <- Z <- data.frame()
#attempt to assign the data frames in the LIST to the objects just created
lapply(seq_along(LIST), function(x) c(V, W, X, Y, Z)[x] <<- LIST[[x]])
Non esitate a ridurre qualsiasi/tutte le parti del mio codice per fare questo lavoro (o di lavorare meglio/più veloce).
Questa domanda o ogni risposta dovrebbe venire con un grande "Figli, non farlo a casa!" disclaimer. Come forse sapete, le assegnazioni globali all'interno delle funzioni sono una ricetta per il disastro o "la vita di un vulcano" per citare Richard Burns (http://www.burns-stat.com/pages/Tutor/R_inferno.pdf) – flodel
@flodel Non sono programmatore, quindi puoi spiegare brevemente qual è il problema con assegnare? –
Quindi ho letto la sezione che hai citato. Sembra intelligente per il codice per il consumo pubblico ma non per il codice personale. Riesci a vedere un modo per raggiungere questo effetto senza? –