Cách hiệu quả để tổ chức mã R và đầu ra là gì? [đóng cửa]


23

Tôi đang tìm kiếm đầu vào về cách người khác tổ chức mã R và đầu ra của họ.

Cách làm hiện tại của tôi là viết mã theo các khối trong tệp văn bản như sau:

#=================================================
# 19 May 2011
date()
# Correlation analysis of variables in sed summary
load("/media/working/working_files/R_working/sed_OM_survey.RData")
# correlation between estimated surface and mean perc.OM in epi samples
cor.test(survey$mean.perc.OM[survey$Depth == "epi"], 
    survey$est.surf.OM[survey$Depth   == "epi"]))
#==================================================

Sau đó tôi dán đầu ra vào một tệp văn bản khác, thường là với một số chú thích.

Các vấn đề với phương pháp này là:

  1. Mã và đầu ra không được liên kết rõ ràng ngoài ngày.
  2. Mã và đầu ra được tổ chức theo trình tự thời gian và do đó có thể khó tìm kiếm.

Tôi đã cân nhắc việc tạo một tài liệu Sweave với mọi thứ vì sau đó tôi có thể tạo một mục lục nhưng điều này có vẻ như nó có thể rắc rối hơn những lợi ích mà nó sẽ cung cấp.

Hãy cho tôi biết bất kỳ thói quen hiệu quả nào bạn có để tổ chức mã R và đầu ra của bạn sẽ cho phép tìm kiếm và chỉnh sửa phân tích hiệu quả.


2
Chỉ để tránh sao chép / dán, sink()hoặc capture.output()có thể là bạn bè của bạn. Các tiện ích báo cáo, như Hmisc , Sweave hoặc brew rất đáng để xem xét (điểm 1 của bạn). Các hệ thống phiên bản ( rcs , svn hoặc git ) có thể giúp với điểm 2.
chl

@chl - cảm ơn những lời đề nghị. Tôi đã không nhận thức được sink()capture.output(). Thật tuyệt.
DQdlM

1
hôm nay cũng có đan!
kjetil b halvorsen

Câu trả lời:


22

Bạn không phải là người đầu tiên đặt câu hỏi này.


+1 và liên kết đầu tiên bạn cung cấp tài liệu tham khảo một chủ đề trong đó :-)
chl

@chl Cảm ơn! Tôi đã tự hỏi nếu câu hỏi này là một bản sao và nên được đóng lại ...
Bernd Weiss

Đó là, IMO. Nhưng vì không có phiếu để đóng, tôi miễn cưỡng đóng nó. Ngoài ra, câu hỏi cũ hơn chung chung, nhưng một câu hỏi rất giống nhau đã được đóng lại trong quá khứ. Chúng ta hãy chờ xem nó diễn ra như thế nào.
chl

cảm ơn vì danh sách Điều này rất hữu ích. Tôi hình dung tôi không phải là người đầu tiên có câu hỏi này nhưng dường như tôi không tìm thấy nhiều với tìm kiếm ban đầu (rõ ràng là không phù hợp).
DQdlM

6

Tôi cho một tổ chức mọi thứ thành 4 tệp cho mỗi dự án hoặc phân tích. (1) 'code' Nơi tôi lưu trữ tệp văn bản của các hàm R. (2) 'sql' Nơi tôi giữ các truy vấn được sử dụng để thu thập dữ liệu của mình. (3) 'dat' Nơi tôi giữ các bản sao (thường là csv) dữ liệu thô và đã xử lý của mình. (4) 'rpt' Nơi tôi lưu trữ các báo cáo tôi đã phân phối.

TẤT CẢ các tệp của tôi được đặt tên bằng các tên rất dài, chẳng hạn như 'analy_of_network_abc_for_research_on_modified_buffer_19May2011'

Tôi cũng viết tài liệu chi tiết lên phía trước nơi tôi tổ chức giả thuyết, mọi giả định, tiêu chí bao gồm và loại trừ, và các bước tôi dự định thực hiện để đạt được khả năng giao hàng của mình. Tất cả điều này là vô giá cho nghiên cứu lặp lại và làm cho quá trình thiết lập mục tiêu hàng năm của tôi dễ dàng hơn.


2

Bây giờ tôi đã thực hiện chuyển đổi sang Sweave, tôi không bao giờ muốn quay lại. Đặc biệt nếu bạn có các ô làm đầu ra, việc theo dõi mã được sử dụng để tạo từng ô sẽ dễ dàng hơn nhiều. Nó cũng làm cho nó dễ dàng hơn nhiều để sửa một điều nhỏ ngay từ đầu và làm cho nó gợn qua đầu ra mà không phải chạy lại bất cứ thứ gì bằng tay.


1
Sweave là tuyệt vời. Phải mất một số quen thuộc, nhưng nếu bạn đã biết TeX và R, đó là sự lựa chọn rõ ràng. Nó cũng cho phép bạn không bao giờ dành thời gian sắp xếp các cột trong bảng một lần nữa, điều này thật tuyệt.
richiemorrisroe

Cảm ơn các đầu vào. 2 mối quan tâm của tôi với Sweave là 1) Tôi sẽ kết thúc với một tập tin bazillion trong thư mục của mình - đặc biệt là với rất nhiều số liệu và 2) Tôi sẽ phải thực sự cẩn thận với mã để tránh bị trục trặc mỗi khi tôi biên dịch toàn bộ tài liệu (ví dụ, tôi nghĩ rằng một cái gì đó được tải và nó không). Bạn có những vấn đề này?
DQdlM

1) Bạn có thể chọn xóa các tệp trung gian nếu bạn muốn; Tôi sử dụng tập lệnh Sweave.sh ( cran.r-project.org/contrib/extra/scripts/Sweave.sh ) tự động thực hiện điều đó; mặc dù có thể dễ dàng tắt Nếu bạn làm điều đó, hãy chắc chắn rằng bạn biết những gì nó sẽ xóa trước khi sử dụng nó để ngăn chặn thảm họa có thể xảy ra. Phiên bản ngắn là nếu không có tệp nào chia sẻ tên cơ sở của tệp Rnw của bạn thì bạn vẫn ổn.
Aaron - Phục hồi Monica

2) Theo tôi, phải cẩn thận theo cách đó là một điều tốt, và đôi khi sẽ biên dịch tài liệu Sweave của tôi với mục đích chính xác đó, đó là để đảm bảo rằng tôi đã theo dõi đúng mọi thứ cần thiết để tạo lại phân tích.
Aaron - Phục hồi Monica

1
@ naught101: Đối với các phân tích dài, tôi thực hiện chạy riêng và lưu kết quả, thường là trong một .RDatatệp, để nhập vào tài liệu Sweave. Tuy nhiên, cũng có một số tùy chọn tuyệt vời để "lưu trữ" kết quả từ một đoạn mã để nó không được chạy lại.
Aaron - Hồi phục lại

2

Để cấu trúc các tệp mã .R đơn, bạn cũng có thể sử dụng strcode , một bổ trợ RStudio mà tôi đã tạo để chèn các dấu tách mã (với các tiêu đề tùy chọn) và dựa trên chúng - có được các bản tóm tắt của các tệp mã. Tôi giải thích việc sử dụng nó chi tiết hơn trong bài viết trên blog này .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.