Vấn đề là bạn đang gán phiên bản mới của bạn layout
với đồ họa namespace, đó là những gì được trả về bởi environment(graphics:::layout)
. Bạn thay vì muốn chuyển nhượng thành đồ họa đính kèm gói (ví dụ: môi trường xuất hiện là "package:graphics"
trên đường dẫn tìm kiếm của bạn).
Trong ví dụ của bạn, khi tìm kiếm layout
, R tìm kiếm xuống danh sách các gói gắn liền trả về bởi search()
, và tìm thấy bản gốc layout
trong package:graphics
, trước khi nó bao giờ được thực hiện chức năng bạn đã gán vào namespace:graphics
.
Giải pháp là đơn giản, chỉ cần một sự thay đổi của môi trường giao cho env
trong dòng đầu tiên: xây dựng hơn
# Assign into <environment: package:graphics>
# rather than <environment: namespace:graphics>
env <- as.environment("package:graphics")
unlockBinding("layout" , env = env)
assign("layout" , function(){} , envir = env)
lockBinding("layout" , env = env)
# Now it works as expected
layout
# function(){}
Một chút, có thể hữu ích đối với một số:
search() # Shows the path along which symbols typed at the command
# will be searched for. The one named "package:graphics"
# is where 'layout' will be found.
# None of these return the environment corresponding to "package graphics"
environment(layout)
environment(graphics::layout)
environment(graphics:::layout)
# This does
as.environment("package:graphics")
Nguồn
2011-12-28 22:09:05
tất cả - tôi xin lỗi vì tất cả các câu hỏi liên quan đến môi trường gần đây. Điều này chứng minh là một chủ đề phức tạp và khó hiểu. Nếu có bất kỳ tài liệu đọc được đề nghị nào (ngoài các tệp PDF R chuẩn không hữu ích), hãy cho tôi biết! – SFun28
Đừng xin lỗi; Tôi đã học được rất nhiều từ chính họ. Tôi không có bản thân mình, nhưng tôi đã nghe nói rằng [Chambers] (http://www.amazon.com/Software-Data-Analysis-Programming-Statistics/dp/1441926127/ref=sr_1_9?s=books&ie = UTF8 & qid = 1325110851 & sr = 1-9) cuốn sách là loại R lập trình (như trái ngược với tính toán thống kê) kinh thánh. – joran
Tôi thực sự đã ra lệnh cho cuốn sách đó một giờ trước. =) không thể chờ đợi để xuống nó. Cảm ơn vì những lời động viên, joran! – SFun28