我正在爲大型數據集構建分析工作流程,但首先必須在小型數據集上對其進行驗證。我想要做的是把他們在這樣的環境中分離我的「取樣」,從實際數據集的數據集:如何切換到新的環境並堅持下去?
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
...
但是當我這樣做,sample_df_1
和sample_df_2
將存儲在全球環境而不是我的sample_data
環境。當然,我可以使用assign(..., envir=sample_data)
,但這有點乏味,我不希望它們出現在最終的代碼中。
使用with
也不理想,因爲它裏面的代碼行不能一個接一個執行,這使得它在開發階段相當不方便。
我希望達到的目標是同一種行爲作爲debug
和undebug
,例如:
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)
爲@Gregor指出,「設置選項」可能是更好的描述了我在尋找:允許用戶指定R REPL評估表達式的環境的選項。
謝謝!
不知道我是否理解'with',你可以在那裏執行任何表達式,'with(sample_data,{a < - 1; b < - 2})' – jenesaisquoi
沒錯,但是如果我有20個代碼塊我想開發,然後爲了調試它們,我必須寫(20)'(')並將每個代碼塊放在裏面,因爲'with'中的代碼只能作爲一個整體進行評估。當它準備就緒時,我必須將它們從'with'功能中複製出來。在我看來,使用我提出的方法會更快,更具可讀性。 – Benny
問題是R中的環境只是不這樣工作。您無法爲分配指定不同的「默認」環境。 R是一種功能語言,通常使用功能來管理範圍/環境。所以你應該編寫一個需要一個環境的函數,並且可能在其中嵌入一個'with()'。 – MrFlick