2010-10-29 30 views
8

Tôi đang phát triển một gói trong RKhi phát triển gói R, tôi có phải biên dịch lại gói mỗi khi tôi thực hiện thay đổi không?

Khi tôi gỡ lỗi một chức năng hoặc tập hợp chức năng cụ thể, cách tốt nhất để kiểm tra chức năng là gì?

Tôi có phải sử dụng nguồn ('hàm.R') hoặc R CMD mỗi lần tôi muốn kiểm tra các thay đổi của mình không?

(tín dụng bổ sung cho emacs liên ess key-bindings)

+0

Tín dụng thêm cho emacs + ess ... quá xấu Dirk vừa rời khỏi tàu. –

Trả lời

8

Xem thêm http://github.com/hadley/devtools/ cung cấp một số công cụ để thực hiện tác vụ này dễ dàng hơn.

ví dụ, sau khi thực hiện thay đổi mã nguồn, bạn xây dựng, cài đặt và tải lại một gói với chức năng install():

library(devtools) 
install("package_name") 

DevTools cũng làm cho nó dễ dàng hơn để:

  • Nạp lại gói hoàn chỉnh:

    load_all("pkg") 
    
  • Tạo hoặc cập nhật d ocumentation sử dụng roxygen2

    document("pkg") 
    
  • chạy tất cả các script trong /inst/test/:

    test("pkg") 
    
  • xây dựng và kiểm tra R CMD:

    check("pkg") 
    
+0

Bây giờ tôi quen với gettin, tôi thấy rằng devtools làm cho cuộc sống dễ dàng hơn nhiều và phát triển hiệu quả hơn. Cảm ơn! –

5

Hãy xem ?insertSource, mà là một chức năng mới trong R 2.12.0, cộng với các chức năng khác trong See Also phần của trang giúp đỡ. Ngoài ra, hãy kiểm tra ?assignInNamespace nếu gói của bạn có Không gian tên.

Giả định ở trên bạn đang nói về việc cập nhật và gỡ lỗi nguồn R, không phải mã được biên dịch.

Tôi thường sử dụng tuyến đường source() để tải các phiên bản chức năng mới mà tôi đang cải thiện/gỡ lỗi, cùng với các công cụ gỡ lỗi R thông thường. Nhưng tôi chưa có Namespaces trong các gói của tôi. Các ngón tay của tôi đã trở nên khá quen thuộc với việc gắn kết các emacs + ess để tạo nguồn đệm trong những năm qua.

+0

Cảm ơn câu trả lời của bạn: Cc Cl là hữu ích, nhưng chỉ cần lưu ý cho người khác, khi sử dụng trên máy chủ (trong chế độ ess-remote), đường dẫn tệp bắt đầu bằng ~/pkg/R/fn.R thay vì/server : pkg/R/fn.R mặc dù khi tôi viết tệp, nó là đến/server: .. location nếu tôi không sử dụng vị trí máy chủ, tôi nhận được lỗi: không thể mở tệp '/ ssh: server/home/usr/pkg/R/function.R 'bạn có nhận thấy điều này? –

+0

@David: xin lỗi, emacs của tôi + ess fu là yếu. Tôi chưa bao giờ sử dụng nó theo cách bạn mô tả. (Tôi cho rằng bạn không chỉnh sửa phiên bản cục bộ và mong đợi ESS bằng cách nào đó biết được tệp ở đâu trên máy chủ?) Đề nghị bạn hỏi câu hỏi mới ở trên, ở đây, nó sẽ nhận được nhiều ánh mắt hơn so với Q về phát triển gói R . –

+0

đây là một câu trả lời tuyệt vời nhưng bây giờ tôi đang nhận được hang của devtools, tôi sẽ nói nó là giải pháp tốt nhất cho vấn đề vì vậy tôi đã cập nhật và chọn [câu trả lời của Hadley] (http://stackoverflow.com/a/4061424/199217). –

5

Bạn có thể muốn có một cái nhìn tại gói 'mvbutils'. Tôi sử dụng nó để chỉnh sửa trực tiếp các gói của mình; Tôi có thể thêm, xóa và chỉnh sửa các hàm và tài liệu trong khi gói được tải và các thay đổi được phản ánh cả trong phiên bản đã tải, trong phiên bản đã cài đặt (vì vậy chúng được giữ trong phiên R tiếp theo) và [khi tôi nói nó] trong "gói nguồn". Tôi chỉ xây dựng lại thông qua R CMD khi tôi muốn phân phối một phiên bản nén cho người khác. Để kiểm tra mã, tôi sử dụng gói 'gỡ rối', hoạt động tốt trên gói đã tải.

Tôi thậm chí còn sử dụng 'mvbutils' để chỉnh sửa trực tiếp 'mvbutils', đôi khi có thể đôi chút lông.

Tài liệu 'mvbutils' thực sự có thể thực hiện với bản trình diễn đầy đủ của hành động này, nhưng về lý thuyết tài liệu hiện tại sẽ cho bạn biết cách tiến hành.

Không thể giúp bạn với Emacs, xin lỗi ...

+0

Đây là một gói tuyệt vời, cảm ơn. Gần đây tôi rất vui khi tìm thấy 'foodweb', một sự trợ giúp tuyệt vời trong việc tìm kiếm các phụ thuộc trong mã của tôi. – Iterator

1

Tôi đã gặp vấn đề tương tự và tôi đã giải quyết vấn đề này khi sử dụng RStudio.

Trong trình chỉnh sửa, tôi chọn tùy chọn "Nguồn khi lưu" cho tệp R của tôi có chứa hàm. Khi tôi được sử dụng để lưu tệp của mình mỗi khi tôi chỉnh sửa tệp đó (một thói quen tốt mà tôi nghĩ), các hàm tương ứng được tải trong không gian làm việc R của tôi luôn được cập nhật.

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