Planuję zacząć pisać paczki R.
Pomyślałem, że dobrze byłoby przestudiować kod źródłowy istniejących pakietów, aby poznać konwencje budowy pakietów.
Moje kryteria dobrych pakietów do nauki:
- Proste pomysły statystyczne / techniczne : Chodzi o poznanie mechaniki konstrukcji opakowań. Zrozumienie pakietu nie powinno wymagać szczegółowej wiedzy ściśle związanej z domeną na temat aktualnego tematu pakietu.
- Prosty i konwencjonalny styl kodowania : szukam czegoś więcej niż,
Hello World
ale nie wiele więcej. Idiosynkratyczne sztuczki i hacki byłyby rozpraszające podczas pierwszego uczenia się pakietów R. - Dobry styl kodowania : kod jest dobrze napisany. Ujawnia zarówno zrozumienie dobrego kodowania, jak i świadomość konwencji kodowania w R.
Pytania:
- Które pakiety dobrze byłoby studiować?
- Dlaczego sugerowany kod źródłowy pakietu jest dobry do studiowania w odniesieniu do wyżej wymienionych kryteriów lub innych kryteriów, które mogą być istotne?
Aktualizacja (13.12.2010) Po komentarzach Dirka chciałem wyjaśnić, że bez wątpienia wiele pakietów byłoby dobrze uczyć się w pierwszej kolejności. Zgadzam się również, że pakiety zapewnią modele dla różnych rzeczy (np. Winiety, klasy S3, klasy S4, testy jednostkowe, Roxygen itp.). Niemniej jednak interesujące byłoby przeczytanie konkretnych sugestii na temat dobrych pakietów na początek i powodów, dla których byłyby to dobre pakiety na początek.
Zaktualizowałem również powyższe pytanie, aby odnosiło się do „paczek” zamiast „paczki”.
Odpowiedzi:
Sugerowałbym spojrzenie na pakiet zoo z następujących powodów:
useDynLib
,import
,export
, iS3method
;RUnit
;.Call
interfejs;Nie używa roxygen, co jest bardzo przydatne, ale 7 na 8 nie jest złe. ;-)
Aby odpowiedzieć na twoje kryteria:
zoo
jest klasą macierzową uporządkowaną według czegoś . Nie jest wymagana wiedza specyficzna dla domeny.zoo
wygląda na to, że ma kilka konwencji kodowania, ale nic nie przesadza z zrozumieniem kodu.zoo
dąży do jak największej zgodności z R.źródło
Nie uważam się za uznanego programistę pakietów R, ale niedawno przeszedłem proces pisania i utrzymywania pakietu dla mojego środowiska pracy.
Wcześniej pisałem / utrzymywałem / aktualizowałem zestaw skryptów, które przekazywałem od projektu do projektu za pomocą
source()
funkcji. Efektem końcowym było to, że w większości przypadków redundantne skrypty były zawieszane w różnych miejscach na naszych dyskach sieciowych. Nigdy nie było jasne, gdzie znajduje się najnowszy zestaw skryptów. Od tego czasu przeprowadziłem migrację do pisania / utrzymywania pakietu wykorzystującego roxygen. To znacznie uprościło moje życie i ułatwiło dzielenie się pracą z kolegami.W oparciu o powyższe kryteria popieram zalecenie przejrzenia pakietów napisanych przez Hadley. W szczególności uważam, że przeczytanie wiki devtools byłoby bardzo pomocne. Kod Hadleya jest dobrze udokumentowany, a kilka jego pakietów wykorzystuje roxygen. Myślę, że pisanie i utrzymywanie jednego dokumentu dla funkcji R i dokumentacji R jest znacznie łatwiejsze niż podzielenie ich na dwie lokalizacje (pliki .R i .RD).
Pakiety Hadleya służą również dość podstawowym pojęciom i są stosunkowo łatwe do wyparowania (imho), jeśli szukasz wskazówek dotyczących pomysłów dotyczących aspektów technicznych. Znalazłem się kopanie przez plyr kodu źródłowego kiedy szukam wskaźnik sprawie dokumentacji roxygen lub innych podstawowych zadań.
źródło
Dlaczego nie zastosować empirycznego podejścia do losowego próbkowania? Po prostu wybierz kilka i sprawdź, która praca jest dla Ciebie.
Żartuję na bok, po prostu spójrz na kilka pakietów, których sam używasz i które znasz. Pobieranie ich jest łatwe, a jeśli wolisz, możesz je również wyświetlić za pośrednictwem interfejsu internetowego w R-Forge, RForge lub Github.
Najprawdopodobniej skończysz z różnymi pakietami różnych pomysłów. Niektóre mogą ci pomóc w sposobie integracji, powiedzmy, winiety. Niektóre mogą pomóc w skompilowaniu kodu. Lub testy jednostkowe. Lub Roxygen. Jest ich około 2600, więc po co mieć obsesję na punkcie jednego najlepszego?
źródło
Kolejną wskazówką może być przyjrzenie się pakietom, na których zależy Twój oddział lub interakcji, szczególnie jeśli implementują niektóre elementy, o których wspomniał Joshua Ulrich lub zostały napisane przez znanych autorów. Pomocne może być nauczenie się, jak się robi rzeczy w twojej dziedzinie, aby zapewnić pewną kompatybilność. Często ludzie pomyślą o pewnych problemach, a przeczytanie ich rozwiązania może być pomocne.
źródło
Poleciłbym pakiet przekształcania Hadleya. możesz znaleźć źródło na https://github.com/hadley/reshape
źródło