2010-02-17 34 views
45

Wszystko,Organizowanie R Kod źródłowy

Zaczynam pisać obiektowo zorientowany kod R po raz pierwszy i przewiduję posiadanie wielu plików R z zależnościami pomiędzy. Jestem nowy w R i nie napisałem jeszcze nic poza jednym masywnym skryptem do testowania pomysłów. Czy istnieją zasoby online, które zawierają wskazówki, w jaki sposób należy organizować kod? Brak opisów jak budować pakiety, nie znajduję takich wskazówek. W tym momencie chcę po prostu zorganizować kod w taki sposób, aby ładowanie i interakcja z kolekcją procedur były tak proste, jak to tylko możliwe.

Doceniam wszelkie wskazówki, które możesz podać.

Chris

+2

Prawdopodobny duplikat: http://stackoverflow.com/questions/1266279/how-to-organize-large-r-programs – Shane

Odpowiedz

41

To pytanie jest bardzo ściśle związane z: "How to organize large R programs?"

Należy rozważyć utworzenie pakietu R. Możesz użyć funkcji package.skeleton, aby rozpocząć od podania zestawu plików R. Gorąco polecam też używanie pakietu roxygen do udokumentowania pakietu na samym początku, ponieważ znacznie trudniej jest go wykonać po fakcie.

Przeczytaj "Writing R Extensions". Książka online "Statystyka z R" ma numer a section on this subject. Zobacz także Creating R Packages: A Tutorial autorstwa Friedricha Leisch'a. Wreszcie, jeśli jesteś w NY, przyjdź na nadchodzące spotkanie grupy use-R NY na "Authoring R Packages: a gentle introduction with examples".

Wystarczy powtarzać pewne sugestie dotyczące dobrych praktyk:

  • Pakiet pozwala na użycie R CMD check co jest bardzo pomocne przy łapania błędów; osobno możesz spojrzeć na użycie pakietu codetools.
  • Pakiet zmusza również do wykonania minimalnej ilości dokumentacji, co w dłuższej perspektywie prowadzi do lepszych praktyk.
  • Należy również rozważyć wykonanie testów jednostkowych (np. Z RUnit), jeśli chcesz, aby kod był solidny/łatwy w utrzymaniu.
  • Należy rozważyć użycie przewodnika po stylach (np. Google Style Guide).
  • Użyj systemu kontroli wersji od samego początku, a jeśli zamierzasz stworzyć kod open source, rozważ użycie github lub r-kuge.

Edit:

chodzi jak robią przyrostowych zmian bez odbudowy i instalacji pełnego pakietu: Uważam, że najłatwiej jest dokonać zmian w odpowiednich aktach, R, a następnie użyć polecenia source załadować te zmiany. Po załadowaniu biblioteki do sesji R, zawsze będzie ona niższa w środowisku (i niższa w priorytecie) niż .GlobalEnv, więc wszelkie zmiany, które bezpośrednio pobierzesz lub załadujesz, zostaną użyte jako pierwsze (użyj polecenia search, aby zobaczyć to). W ten sposób możesz mieć swój pakiet pod kontrolą i nadpisujesz zmiany podczas testowania ich w środowisku.

Można również użyć IDE, takiego jak StatET lub ESS. Sprawiają, że ładowanie pojedynczych linii lub funkcji z paczki R jest bardzo łatwe. StatET jest szczególnie dobrze zaprojektowany do obsługi pakietów w strukturze katalogowej.

+0

Dzięki Shane. Dokładnie to, czego szukałem. – Chris

+1

Oto kolejne pytanie, które pojawiło się w dyskusji na temat SO, do której się odwoływałeś, bez odpowiedzi. Podczas modyfikowania/dodawania kodu do pakietu wywołującego, w jaki sposób można ponownie załadować zawartość pakietu bez przechodzenia przez instalację? Czy istnieje wygodny sposób? Po prostu staram się opanować cykl, przez który przechodzi się podczas pisania kodu i testowania. – Chris

+3

Spójrz na funkcję "sourceDir", która znajduje się w sekcji przykładowej pliku pomocy dla funkcji "source" (wpisz "? Source" po pytaniu R commnand). Mam bardzo podobną funkcję w moim pliku ~/.Rprofile, i I sourceDir() w katalogu mypackage/R pakietu, który buduję, kiedy wprowadzam w nim zmiany. Od czasu do czasu będę ponownie instalować paczkę, ale uważam, że w ten sposób łatwiej jest wprowadzać przyrostowe zmiany bez zdmuchiwania jakichkolwiek bieżących prac, które wykonuję w tłumaczu. –

0

jest to przydatne dla osób, które są skierowane na to stanowisko podczas wyszukiwania. Ja też stanąłem twarzą w twarz z tym samym scenariuszem i nie znalazłem żadnego zasobu, który wyjaśniłby to jasno. Oto moja próba umieścić rozwiązanie w kilku prostych krokach:
1) Utwórz nowy katalog projektu
2) utworzyć pakiet za pośrednictwem R studio (sam proces jak wyżej)
3) przechowywać zarówno w tym samym miejscu (aby uniknąć nieporozumień).
4) Zainstaluj i załaduj pakiety: devtools i roxygen2.
5) użyj funkcji load_all().

I gotowe.

+0

jaka jest funkcja '' 'load_all()' ''? –

+0

load_all ładuje pakiet. Z grubsza symuluje to, co się dzieje, gdy pakiet jest zainstalowany i załadowany biblioteką –