Tôi đang xây dựng quy trình phân tích cho các tập dữ liệu lớn nhưng trước tiên tôi phải xác thực nó trên các tập dữ liệu quy mô nhỏ hơn. Những gì tôi muốn làm là để tách tôi "lấy mẫu" tập hợp dữ liệu từ các tập dữ liệu thực tế bằng cách đặt chúng trong một môi trường như thế này:Làm thế nào để chuyển sang một môi trường mới và dính vào nó?
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
...
Tuy nhiên khi tôi làm điều này, sample_df_1
và sample_df_2
sẽ được lưu trữ trong môi trường toàn cầu thay vì môi trường sample_data
của tôi. Tất nhiên tôi có thể sử dụng assign(..., envir=sample_data)
nhưng đó là hơi tẻ nhạt, và tôi không muốn chúng hiển thị trong mã cuối cùng. Nó cũng không phải là lý tưởng để sử dụng with
vì các dòng mã bên trong nó không thể được thực hiện từng cái một, mà làm cho nó khá bất tiện ở giai đoạn phát triển.
gì tôi hy vọng sẽ đạt được là cùng một loại hành vi như debug
và undebug
, ví dụ:
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)
như @Gregor chỉ ra, "thiết lập một tùy chọn" có lẽ tốt hơn mô tả những gì tôi đang tìm kiếm : một tùy chọn cho phép người dùng chỉ định môi trường trong đó R REPL đánh giá các biểu thức.
Cảm ơn!
không chắc chắn tôi hiểu về 'with', bạn có thể thực hiện bất kỳ biểu thức nào trong đó,' với (sample_data, {a <- 1; b <- 2}) ' – jenesaisquoi
Đúng vậy, nhưng nếu tôi có 20 khối mã Tôi muốn phát triển, sau đó để debug chúng tôi phải viết 20 'với()' và đặt mỗi đoạn mã bên trong nó bởi vì mã bên trong 'with' chỉ có thể được đánh giá như một tổng thể. Và khi nó đã sẵn sàng, tôi sẽ phải sao chép chúng ra khỏi hàm 'with'.Theo tôi, nó sẽ nhanh hơn và dễ đọc hơn khi sử dụng cách tiếp cận được gợi ý của tôi. – Benny
Vấn đề là môi trường trong R không hoạt động như thế. Bạn không thể gán các môi trường "mặc định" khác nhau cho bài tập. R là một ngôn ngữ chức năng và thông thường bạn sử dụng các hàm để quản lý phạm vi/môi trường. Vì vậy, bạn nên viết một hàm nhận một môi trường và có thể lồng một 'with()' trong đó. – MrFlick