2012-08-23 4 views
5

Napisałem trochę kodu R dla rozprawy, opierając się na niektórych pakietach zewnętrznych (np. plyr i reshape) i pisząc kilka względnie prostych wbudowanych funkcji C++ przy użyciu inline i RcppArmadillo.W jaki sposób zapewnić, że kod R/Rcpp jest odtwarzalny ("możliwy do rozpowszechnienia")?

Chciałbym, aby można było wykonywać go "tak jak jest" na komputerach innych niż mój własny (Win64), dla celów odtwarzalności badań.

Moje pytanie: załóżmy, że zawierały kod do instalacji wymaganych pakietów, mieliby RcppArmadillo (i Rcpp i inline) Pakiety być wystarczająca, aby móc skompilować funkcje napisane w RcppArmadillo, czy też użytkownik końcowy trzeba zmienić ścieżek systemowych do kompilacji na swoim komputerze z systemem Windows? Jeśli nie, to czy jest możliwe/zalecane zapisanie skompilowanych funkcji z mojego końca i zawartych w kodzie R, który wysyłam?

Ponadto, w mało prawdopodobnym przypadku, że kod powinien zostać uruchomiony jakiś czas później (powiedzmy, kilka lat), jest wystarczające, aby dołączyć pełną instalację R z odpowiednimi pakietami w ich obecnej wersji, aby kod " przyszłościowy "?

Mam nadzieję, że pytanie jest jasne.

Odpowiedz

9

Myślę, że masz na myśli swój kod, który ma być "dystrybuowalny" i "wykonywalny przez kogoś innego", co jest luźniejszym wymogiem. Bycie "odtwarzalnym" oznacza, że ​​poprzednie pytanie jest prawdziwe i dodaje ograniczenie, że wyniki są identyczne (aż do wybranego przez ciebie epsilon).

A zwykłą odpowiedzią na pytanie "jak mogę pozwolić innym uruchomić mój kod R" jest utworzenie pakietu.

Dla kodu związanego z Rcpp mamy całą winietę poświęconą na stworzenie własnego pakietu z twoim codem wykorzystującym Rcpp. Winieta nazywa się "pakietem Rcpp".

+0

Dziękuję, nie wiedziałem o rozróżnieniu między "odtwarzalnym" i "możliwym do dystrybucji". Jak zapewne się domyślasz, chodzi mi o to drugie. W połowie oczekiwałem, że odpowiedź brzmi "stwórz paczkę", co dla mnie wydaje się nieco za bardzo oddawać mój kod, ale jeśli to jest najprostsze, najlepiej udokumentowane rozwiązanie, zrobię to. – MatteoS

+0

Btw, dziękuję za 'Rcpp' i' RcppArmadillo' – MatteoS

+0

Głosowałem za rozróżnieniem "odtwarzalnych" i "możliwych do dystrybucji". Ja też tego nie wiedziałem. –

Powiązane problemy