Przeskocz nawigację.
Strona główna

Tworzenie pakietów w R

Tekst powstał na podstwawie artykułu Matt Wand i David Nott pod tytułem Making R Packages.

Na stronie opisano, za pomocą przykladu. w jaki sposób tworzyć własne pakiety funkcji w środowisku R.

Opis dotyczy procedury tworzenia pakietów w systmie Linux.

Zbudujemy pakiet o nazwie roots zawierający trzy funkcje:  cuberoot(), fourthroot() i fifthroot().

Jak sama nazwa sugeruje cuberoot(x) zwraca pierwiastek trzeciego stopnia z liczby rzeczywistej  x. Funkcje fourthroot() i fifthroot() zwracają odpowiednio pierwiastki stopnia 4 i 5. Prezentowane funkcje zostały zaimplementowane w językach:

R - cuberoot(),

Fortran - fourthroot(),

C - fifthroot().

W celu zbudowania pakietu należy wykonać następujące kroki:

  1. Uruchomić konsole i przejść do katalogu, w którym będzie tworzony pakiet np. /home/analityk/R. Opisane dalej kroki zakładają, że użytkownik jest właśnie w tym miejscu.
  2. W katalogu /home/analityk/R utworzyć dwa podkatalogi o nazwach myrlibrary i myrpackages.
  3. Będąc ciągle w katalogu  /home/analityk/R za pomocą dowolnego edytora utworzyć plik o nazwie .Rprofile, który ma zawierać jedną linie  .libPaths("/home/analityk/myrlibrary"). W tym miejscu zostanie zlokalizowany pakiet.
  4. Przejść do katalogu  /home/analityk/R/myrpackages. W tym miejscu umieszczone zostano pliki źródłowe pakietu. Utworzyć podkatalog roots.
  5. Przejść do katalogu /home/analityk/R/myrpackages/roots i utworzyć 4 podkatalogi o nazwach: R, src, data i man.
  6. Używjąc polecenia chmod 755 * ustawić prawa dostępu do pakietu.
  7. Przejść do katalogu /home/analityk/R/myrpackages/roots/R. W tym miejscu umieścić pliki z kodem w języku R. cuberoot.r, fourthroot.r, fifthroot.r i firstlib.r. Wywołać polecenie chmod 644 * w celu zabezpieczenia pakietu. Odnotujmy, że plik firstlib.r zawiera funkcję .First.lib(), która jest wywoływana zawsze kiedy pakiet jest czytany. Jest to bardzo ważna funkcja, bo w niej są wczytywane funkcje zaimplementowane w Fortran i C.
  8. Przejść do katalogu  /home/analityk/R/myrpackages/roots/src. W tym miejscu przechowywane będą funkcje napisane w Fortran i C. Utworzyć pliki o następujących nazwach i zawartości: fthrt.f i fifrt.c. Wywołać polecenie chmod 644 *.
  9. Przejść do katalogu /home/analityk/R/myrpackages/roots/data. W tym katalogu mogą być przechowywane dane. Utworzyć plik  o następującej nazwie i zawartości: table.of.roots.txt Wywołać polecenie chmod 644 *.
  10. Przejść do katalogu  /home/analityk/R/myrpackages/roots/man.W tykm katalogu znajdują się pliki pomocy. Utworzyć pliki o następujących nazwach i zawartości: cuberoot.rd, fourthroot.rd, fifthroot.rd i table.of.roots.rd. Wywołać polecenie chmod 644 *.
  11. Przejść do katalogu   /home/analityk/R/myrpackages/roots i utworzy ć plik  o następującej nazwie i zawartości: DESCRIPTION
  12. Za pomocą dowolnego edytora otworzyć plik i wprowadzić swoje dane.
  13. Będąc ciągle w katalogu /home/analityk/R/myrpackages/roots wywołać polecenie chmod 644 DESCRIPTION.
  14. Wszystkie pliki pakietu roots są już we właściwym miejscu. Przejść do katalogu  /home/analityk/R/myrpackages i wywołać polecenie R CMD build roots. Powstał plik roots_0.1-1.tar.gz.
  15. Zainstalować pakiet używając polecenia R CMD INSTALL -l  /home/analityk/R/myrlibrary roots_0.1-1.tar.gz. Pakiet zostanie zainstalowany w katalogu /home/analityk/R/myrlibrary. Po uruchomieniu R, pakiet można zainstalować również poleceniem  install.packages("/home/analityk/R/myrlibrary roots_0.1-1.tar.gz", repos=NULL).
  16. W celu sprawdzenia czy pakiet został porawie zainstalowany przejść do dowolnego innego katalogu. Uruchomić program R. W trakcie sesji R użyć komendy library("roots", lib.loc="/home/analityk/R/myrlibrary/"). Po załadowaniu biblioteki wywoląc funkcje cuberoot(27). Jeżeli otrzymamy  3, to mamy pewność, że pakiet został poprawie zainstalowany.
  17. Dla bardziej szczegółowej kontroli wpisać data(table.of.roots) a następnie table.of.roots Tabeli tej użyć można do przetestowania funkcji z różnymi argumentami Np. fourthroot(6) powinno zwrócić 1.565085.
  18. Dla przećwiczenia proceduru utworzyć nową funkcję wraz z dokumetacją np. sixthroot() i utworzyć wersję 0.1-2 pakietu roots.

 


Inny opis tworzenia pakietów zajduje się na tutaj albo tutaj


Bardzo szybko strukturę katalogów wraz z plikami, w których znajdyją się definicje funkcji można wygenerować za pomocą polecenia:

package.skeleton(list=c("f","g","d","e"), name="mypkg")

gdzie f, g, d, e to nazwy zdefiniownych w R funkcji a mypkg to nazwa tworzonego pakietu.

Ważne, żeby funkcje były wcześniej zdefiniowane. Dalej postępujemy analogicznie jak w pkt. 14 i kolejnych.