2015-06-16 16 views
5

Tôi đang viết một gói R và tôi muốn sử dụng một chức năng từ một gói khác (plotKML). Gói bên ngoài này có rất nhiều phụ thuộc mà tôi không muốn người dùng của mình được yêu cầu tải xuống v.v. Nếu tôi sử dụng importFrom(plotKML, readGPX) trong tệp NAMESPACE, nó sẽ tải tất cả plotKML vào không gian tên và tải xuống tất cả các phụ thuộc mà tôi không muốn.Nhập một chức năng trong gói R (không importFrom)

Vì vậy, câu hỏi đặt ra là: có thích hợp để sao chép mã cho một hàm tôi cần (đảm bảo rằng tất cả các phụ thuộc trong một hàm đó được bao gồm)? Nếu vậy điều gì là thích hợp cho phân bổ/tài liệu - tôi có sao chép tài liệu từ tài liệu gốc không?

Có một cuộc thảo luận tuyệt vời về vấn đề này trong this post và câu trả lời của Brian Diggs rất hữu ích. Nhưng ông kết thúc bằng "Ví dụ của bạn, bạn có thể tốt hơn việc sao chép mã cho memisc :: mô tả trong gói của bạn, mặc dù cách tiếp cận đó có vấn đề riêng và hãy cẩn thận" vì vậy tôi không chắc chắn về vấn đề cho dù đó là thích hợp từ góc độ phân bổ.

+0

Mã cho chức năng đó có chạy không phụ thuộc không? – Dason

+0

Hàm này phụ thuộc vào một số chức năng trong gói XML mà tôi cần phải nhập, vì vậy không có vấn đề gì. Nếu không, nó không yêu cầu các chức năng từ bất kỳ gói nào khác được liệt kê trong hàng nhập khẩu (gần 20 gói bắt buộc!) Xem [tại đây] (http://cran.r-project.org/web/packages/plotKML/index.html) cho danh sách mà plotKML yêu cầu. – ZRoss

+0

Tôi cho rằng hầu hết người dùng của bạn đã cài đặt ít nhất một nửa số gói mà từ đó plotKML vẫn nhập. – Roland

Trả lời

3

Câu hỏi về phân bổ phù hợp có thể sẽ được giải quyết tốt nhất bằng cách liên hệ trực tiếp với tác giả của gói. Như đã lưu ý trong các ý kiến ​​ở trên, gói đó dường như sử dụng GPL-3, điều này có nghĩa là bạn có thể đưa hàm vào gói của mình nhưng gói của bạn phải được cấp phép GPL-3. (Như mọi khi, có lẽ không ai ở đây là luật sư để bạn kiểm tra ...)

Nhược điểm chính để sao chép chỉ chức năng bạn cần là bạn chịu trách nhiệm duy trì nó. Điều này cũng có thể có nghĩa là duy trì nó theo cách giữ cho nó đồng bộ với phiên bản gốc từ plotKML. Tùy thuộc vào gói, mã xung quanh và tần suất nó được cập nhật có thể khá đơn giản hoặc nó có thể là khủng khiếp.

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