Có thể sử dụng env()
làm thay thế cho các không gian tên và cách kiểm tra xem có tồn tại môi trường trước khi thêm các chức năng vào không?cách thêm các chức năng vào môi trường hiện tại
này liên quan đến câu hỏi này, và gợi ý Brendan của How to organize large R programs? Tôi hiểu điểm Dirk trong câu hỏi đó, tuy nhiên đối với sự phát triển đó là đôi khi không thực tế để đưa các chức năng trong các gói.
EDIT: Ý tưởng là bắt chước không gian tên trên các tệp và do đó có thể tải các tệp khác nhau một cách độc lập. Nếu một tệp đã được tải trước đó thì môi trường không cần phải được tạo, chỉ cần thêm vào.
Cám ơn ý tưởng
EDIT: Vì vậy, có lẽ mã này dưới đây sẽ tương đương với không gian tên trong các ngôn ngữ khác: -
# how to use environment as namespaces
# file 1
# equivalent of 'namespace e' if (!(exists("e") && is.environment(e))) { e <- new.env(parent=baseenv()) }
e$f1 <- function(x) {1}
# file 2
# equivalent of 'namespace e' if (!(exists("e") && is.environment(e))) { e <- new.env(parent=baseenv()) }
e$f2 <- function(x) {2}
Tôi tổ chức * nhiều * mã của tôi trong các gói, nhưng sử dụng gói 'devtools' của Hadley để tải nó vào môi trường. Điều này về cơ bản đạt được những gì bạn mô tả, nhưng sau đó tôi cũng có thêm lợi thế mà tôi có thể xây dựng và tái sử dụng gói nếu tôi muốn. (Nói cách khác, tôi không cần phải liên tục xây dựng lại gói trong khi tôi đang phát triển.) – Andrie