Tôi đã đọc tài liệu cho parent.env() và có vẻ khá đơn giản - nó trả về môi trường kèm theo. Tuy nhiên, nếu tôi sử dụng parent.env() để đi bộ chuỗi các môi trường kèm theo, tôi thấy một cái gì đó mà tôi không thể giải thích. Thứ nhất, mã (lấy từ "R trong một nutshell")parent.env (x) nhầm lẫn
library(PerformanceAnalytics)
x = environment(chart.RelativePerformance)
while (environmentName(x) != environmentName(emptyenv()))
{
print(environmentName(parent.env(x)))
x <- parent.env(x)
}
Và kết quả:
[1] "imports:PerformanceAnalytics"
[1] "base"
[1] "R_GlobalEnv"
[1] "package:PerformanceAnalytics"
[1] "package:xts"
[1] "package:zoo"
[1] "tools:rstudio"
[1] "package:stats"
[1] "package:graphics"
[1] "package:utils"
[1] "package:datasets"
[1] "package:grDevices"
[1] "package:roxygen2"
[1] "package:digest"
[1] "package:methods"
[1] "Autoloads"
[1] "base"
[1] "R_EmptyEnv"
Làm thế nào chúng ta có thể giải thích các "cơ sở" ở đầu và "cơ sở" ở đáy? Ngoài ra, làm cách nào chúng tôi có thể giải thích "package: PerformanceAnalytics" và "import: PerformanceAnalytics"? Tất cả mọi thứ có vẻ phù hợp mà không có hai dòng đầu tiên. Đó là, biểu đồ hàm.RelativePerformance nằm trong gói: môi trường PerformanceAnalytics được tạo bởi xts, được tạo bởi sở thú, ... tất cả các con đường lên (hoặc xuống) đến cơ sở và môi trường trống.
Ngoài ra, tài liệu không phải là siêu rõ ràng về điều này - là "môi trường kèm theo" môi trường trong đó môi trường khác được tạo ra và do đó đi bộ parent.env() cho thấy một chuỗi "sáng tạo"?
Sửa
Shameless plug: Tôi đã viết một blog post giải thích môi trường, parent.env(), thùng, namespace/gói vv với sơ đồ trực quan.
nhờ tất cả những ai đã đóng góp về các vấn đề này. Rất khó để chọn câu trả lời vì tất cả các bài đăng đều tuyệt vời – SFun28