2011-12-14 23 views
6

Tôi đã tạo ra một gói 'mypackage' (với một không gian tên 'mypackage' đính kèm) Trong gói này có một chức năng mà tôi có thể gọi hoặc vớixác định một hàm trong một không gian tên cụ thể

'myfunction' 

hoặc

'mypackage::myfunction' 

Bây giờ tôi muốn thay thế chức năng của mình bằng một phiên bản khác (đã cập nhật).

tôi sử dụng để làm

source(path) 

nơi con đường là con đường của một tập tin nơi 'myfunction' cập nhật được định nghĩa

Bây giờ tôi chuyển sang R 2.14, và hệ thống này doesnt làm việc bởi vì rõ ràng R kiểm tra đầu tiên nếu có một hàm bên trong cùng một không gian tên và nếu có một hàm, nó sẽ sử dụng hàm này và không phải là các hàm khác.

Câu hỏi của tôi: làm cách nào để tôi có thể đẩy chức năng được cập nhật vào cùng một không gian tên với tên gói?

Trả lời

7

Xem ?assignInNamespace. Ví dụ

assignInNamespace("myfunction", foo, "mypackage") 

sẽ gán đối tượng foo đến đối tượng tên là "myfunction" trong namespace "mypackage". foo có thể là bất kỳ đối tượng nào bạn muốn, ngay cả myfunction nhưng bạn sẽ cần phải cẩn thận để đảm bảo bạn gọi mypackage::myfunction nếu bạn cũng có myfunction trong môi trường toàn cục/không gian làm việc.

Các vấn đề liên quan