Sto costruendo un flusso di lavoro di analisi per dataset di grandi dimensioni, ma prima devo convalidarlo su dataset di dimensioni più ridotte. Quello che mi piacerebbe fare è quello di separare i miei set di dati "campionati" dai set di dati effettivi mettendoli in un ambiente come questo:Come passare a un nuovo ambiente e attenervisi?
sample_data<-new.env()
attach(sample_data)
# downloading sample_data sets
sample_df_1 <- some_download_function(parameters1)
sample_df_2 <- some_download_function(parameters2)
...
# doing some stuff with them
...
Tuttavia quando faccio questo, sample_df_1
e sample_df_2
saranno conservati in ambiente globale piuttosto che il mio ambiente sample_data
. Ovviamente posso usare assign(..., envir=sample_data)
ma è un po 'noioso, e non voglio che vengano visualizzati nel codice finale.
Non è inoltre ideale utilizzare with
poiché le righe di codice al suo interno non possono essere eseguite una per una, il che rende piuttosto scomodo lo sviluppo.
Quello che spero di raggiungere è lo stesso tipo di comportamento come debug
e undebug
, ad esempio:
switch_to_env(sample_data)
# Everything done here will be done within environment "sample_data"
# And the lines of codes here can be executed one by one
switch_to_env(.GlobalEnv)
come @Gregor sottolineato, "l'impostazione delle opzioni" probabilmente meglio descrive quello che sto cercando : un'opzione che consente all'utente di specificare l'ambiente in cui R REPL valuta le espressioni.
Grazie!
non capisco bene di 'with', puoi eseguire qualsiasi espressione in là,' con (sample_data, {a <- 1; b <- 2}) ' – jenesaisquoi
Esatto, ma se ho 20 blocchi di codici Mi piacerebbe svilupparmi, quindi per debuggarli devo scrivere 20 'con()' e inserire ogni pezzo di codice al suo interno perché il codice all'interno di 'with' può essere valutato solo come un tutto. E quando è pronto dovrò copiarli dalla funzione 'with'.A mio parere sarebbe molto più veloce e più leggibile usare il mio approccio suggerito. – Benny
Il problema è che gli ambienti in R semplicemente non funzionano così. Non è possibile assegnare diversi ambienti "predefiniti" per l'assegnazione. R è un linguaggio funzionale e normalmente si usano le funzioni per gestire ambito/ambienti. Quindi dovresti scrivere una funzione che richiede un ambiente e magari annidare un 'with()'. – MrFlick