poniedziałek, 8 października 2007

Środowisko R i pakiet ESS: instalowanie i rozpoczęcie pracy

R to środowisko do obliczeń statystycznych i wchodzi w skład każdej praktycznie dystrybucji Linuksa. Zainstalować można go bez problemu używając yuma, jeżeli już wcześnie nie został zainstalowany domyślnie. Dokumentację w formacie html odnaleźć można w katalogu /usr/lib/R/html/.

Emacs ma wsparcie do R w postaci pakietu ESS. Instalowanie ESS jest proste: należy rozpakować i dodać do plików startowych Emacsa następujące dwa wiersze (katalog ~/.emacs-local/ess/lisp oczywiście należy dopasować do własnych ustawień):


(add-to-list 'load-path "~/.emacs-local/ess/lisp")
(require 'ess-site)

Uruchamianie ESS jest jakby nieco mniej oczywiste; być może nawet to co opisałem poniżej jest nieoptymalne. Startuję R z wnętrza Emacsa za pomocą M-x R Enter. Zostanie wyświetlone w minibuforze pytanie o katalog roboczy, np.:


ESS [S(R): R] starting data directory ...

Należy wybrać odpowiedni katalog. Po pewnej chwili Emacs przejdzie do bufora *R*, który umożliwia interaktywną pracę z R. W buforze *R* można działać w środowisku R z wnętrza Emacsa dzięki czemu pracuje się wygodniej: działa dopełnienie (Tab) oraz help (C-c C-v). Tyle, że w buforze *R* polecenia R i wyniki obliczeń są przemieszane i szybko można się pogubić. Lepiej pisać program (skrypt) R w osobnym buforze a wyniki oglądać w buforze *R* (ogólnie *R:numer-procesu*, jeżeli działamy z więcej niż jednym skryptem, tj. dla drugiego skryptu zostanie utworzony bufor *R:2*, dla trzeciego *R:3*, itd.). Aby to osiągnąć należy otworzyć (nowy) plik za pomocą standardowego polecenia C-x C-f. Plik powinien mieć rozszerzenie .r. Bufor przejdzie do trybu ESS co zostanie zasygnalizowane pojawieniem się napisu ESS w wierszu trybu (modeline).

W tym buforze także działa pomoc (C-c C-v) i dopełnianie (C-c C-Tab). Pojedynczy wiersz ze skryptu R można uruchamiać za pomocą ess-eval-line (C-c C-j; uwaga: polecenia podzielone na wiersze wymagają naciśnięcia C-c C-j dla każdego wiersza); cały blok poleceń zaś za pomocą ess-eval-region (C-c C-r). Drobna niedogodność to przechodzenie pomiędzy różnymi oknami: tematów pomocy, R oraz bufora ze skryptem R (ESS otwiera/zamyka okna mało ,,intuicyjnie''). Ponieważ skrypty R są krótkie dobrym pomysłem jest podział ekranu na pół (C-x 2) i wyświetlanie w drugim oknie bufora *R*.

Prosty przykład wykorzystania R do określenia związku między poziomem korupcji a sposobem głosowania w sprawie zaakceptowania przez ISO specyfikacji OOXML można znaleźć w Corrupt countries were more likely to support the OOXML document format (Kai Puolamäki). Rysunek obok pokazuje wykonanie skryptu R z ,,wnętrza'' Emacsa (jak widać nawet okno zawierające histogram też się ładnie wyświetliło).

Brak komentarzy:

Prześlij komentarz