2012-08-23 27 views
5

Tôi đã viết một số mã R cho một luận án, dựa vào một số gói bên ngoài (ví dụ: plyrreshape) và viết một vài hàm inline C++ tương đối đơn giản bằng cách sử dụng inlineRcppArmadillo.Làm cách nào để đảm bảo mã R/Rcpp có thể tái sản xuất ("phân phối")?

Tôi muốn đảm bảo rằng nó có thể được thực hiện "như là" trên các máy tính khác với máy tính của tôi (Win64), cho mục đích tái tạo nghiên cứu.

Câu hỏi của tôi: giả sử tôi bao gồm mã để cài đặt các gói yêu cầu, sẽ là RcppArmadillo (và Rcppinline) gói là đủ để có thể biên dịch các chức năng viết bằng RcppArmadillo, hoặc người dùng cuối sẽ cần phải thay đổi đường dẫn hệ thống để biên dịch trên máy tính Windows của mình? Nếu không, có thể/đề nghị để lưu các chức năng biên dịch từ cuối của tôi và bao gồm trong mã R tôi đang vận chuyển?

Ngoài ra, trong trường hợp không có khả năng mã sẽ chạy một thời gian sau đó (có nghĩa là một vài năm), nó có đủ cài đặt R đầy đủ với các gói có liên quan trong phiên bản hiện tại của chúng để tạo mã không " tương lai chứng minh "?

Tôi hy vọng câu hỏi là rõ ràng.

Trả lời

9

Tôi nghĩ rằng bạn có nghĩa là mã của bạn sẽ bị "phân phối" và "có thể thực thi bởi người khác", đó là yêu cầu lỏng lẻo hơn. Việc "tái sản xuất" ngụ ý rằng câu hỏi trước là đúng, và thêm vào hạn chế rằng các kết quả giống hệt nhau (lên đến một epsilon mà bạn chọn).

Và câu trả lời thông thường cho 'cách tôi có thể cho phép người khác chạy mã R của tôi' là tạo gói.

Đối với mã liên quan đến Rcpp, chúng tôi có toàn bộ một họa tiết dành riêng cho việc xây dựng gói của riêng bạn với cá tuyết sử dụng Rcpp của bạn. Họa tiết được gọi là 'Rcpp-package'.

+0

Cảm ơn bạn, tôi đã không nhận thức được sự khác biệt giữa "có thể tái sản xuất" và "phân phối". Như bạn có thể đoán, tôi có nghĩa là sau này. Tôi mong đợi một nửa câu trả lời sẽ là "tạo một gói", mà với tôi dường như coi trọng mã của tôi một chút quá nhiều, nhưng nếu đó là giải pháp dễ nhất, được viết nhiều nhất, tôi sẽ làm điều đó. – MatteoS

+0

Btw, cảm ơn bạn vì 'Rcpp' và' RcppArmadillo' – MatteoS

+0

Tôi đã bỏ phiếu cho sự khác biệt về "có thể tái sản xuất" và "phân phối". Tôi cũng không biết. –

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