2012-05-11 29 views
10

Tôi luôn giả định rằng có một gói trong trường 'Phụ thuộc' cũng sẽ tự động nhập không gian tên. Tuy nhiên, có vẻ như trong R 2.15, các phụ thuộc không có sẵn cho đến khi gói thực sự là đính kèm vào đường dẫn tìm kiếm. Hành vi này có dự định không?Vấn đề phụ thuộc gói R khi không gian tên không được đính kèm

Vấn đề xuất hiện như sau: Giả sử có một gói 'trẻ em' mà Phụ thuộc, nhưng không rõ ràng nhập một gói gọi là 'Chánh' và chứa một hàm mà các cuộc gọi ra một đối tượng trong không gian tên của 'Cha mẹ'. Sau đó, khi chức năng này được gọi mà không thực sự gắn 'Child', chức năng trong 'Parent' không thể được tìm thấy.

Dưới đây là một ví dụ từ hướng dẫn của gói bigdata, nhưng vấn đề là rất rộng rãi:

x = matrix(rnorm(50*80),50,80) 
beta = c(3,2,1.5,rep(0,77)) 
y = rnorm(50) + x%*%beta 
z1 = bigdata::lasso.stars(x,y) 

Ví dụ thất bại vì lasso.stars phụ thuộc vào 'glmnet' mà không được nạp cho đến khi bigdata được đính kèm. Cách duy nhất để có thể gọi lasso.stars là để thực sự gắn bigdata gói:

library(bigdata) 
z1 = bigdata::lasso.stars(x,y) 

Bây giờ làm phức tạp thêm điều gì đó, có vẻ như vấn đề này được kế thừa cho bất kỳ gói 'cháu' rằng Imports trong trường hợp này hàm lasso.stars. Tôi có một thời gian khó khăn để tìm một ví dụ tốt nhưng tôi chắc chắn rằng họ đang ở ngoài đó.

Đây có phải là lỗi không? Tôi biết rằng nó có thể tránh được bằng cách yêu cầu tác giả gói sử dụng Nhập khẩu thay vì Phụ thuộc, nhưng trong thực tế phần lớn các gói trên CRAN vẫn sử dụng Phụ thuộc. Dường như vấn đề là dễ dàng tránh được nếu R sẽ tự động nhập không gian tên của bất kỳ gói Depends nào vào không gian tên gói con.

+0

1 Great câu hỏi. Đó là một trong những tôi đã nghĩ đến chuốt bản thân mình, nhưng đã đưa ra, nghĩ rằng nó có thể được nâng lên tốt hơn trên R-devel (kể từ khi tôi nghĩ rằng các thành viên R-core là những người duy nhất có thể giải quyết này). Họ phải thảo luận về nó, nhưng tôi đã tìm kiếm một cách nhanh chóng nhiều lần và đã không thấy đề cập đến nó, mà có vẻ lạ ... –

+0

@ Jeroen, bạn có thể vui lòng cung cấp ví dụ? Khi tôi thử 'thư viện (xts)', thì các hàm xuất của 'zoo' được nạp tự động. – kohske

+0

@kohske ví dụ là trong chủ đề. Gói 'xts' có một tệp NAMESPACE, trong đó nó nhập thủ công các hàm bắt buộc tạo thành' zoo'. Vì vậy nó không có vấn đề tôi nghĩ. – Jeroen

Trả lời

2

Đối với những người quan tâm, các cuộc thảo luận tiếp tục here trên r-devel mailing list:

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