Blog (29)
Komentarze (476)
Recenzje (0)

R jak raport

@iluzionR jak raport16.06.2011 23:22

Wstęp

Tytułowe raporty, sprawozdania, artykuły można pisać/tworzyć przy pomocy wielu narzędzi. Najpopularniejszym jest pakiet MS Office. Dane z prób, eksperymentów wprowadzamy do Excela, przeprowadzamy obliczenia, analizy, a następnie wyniki kopiujemy do Worda. To najczęściej wykorzystywany sposób postępowania. Prosty i skuteczny. Przynajmniej w przypadku niewielkiej ilości raportów.

Duże ilości raportów można tworzyć w sposób programowy, np. przy użyciu narzędzia dla języka Python -- ReportLab. Jest to rozwiązanie trudniejsze, ale niezwykle efektywne.

Trzeci sposób, będący tematem tego wpisu, to rozwiązanie pośrednie, kompromis pomiędzy wygodą, a efektywnością.

R jak raport

Sweave jest narzędziem pozwalającym na osadzenie kodu R w dokumentach LaTeX. GNU R jest językiem programowania (dialektem S) i środowiskiem do obliczeń statystycznych, analizy danych oraz wizualizacji wyników.

Podstawowa wersja R dostępna jest na stronie R-project jako produkt open source. Na podstawie wersji otwartoźródłowej rozwijane są również komercyjne edycje enterprise jak np. Revolution Analytics.

Środowisko R dostępne jest dla systemów Linux, Mac OS oraz Windows. Użytkownicy edytora Emacs (opisywanego wcześniej na blogu) mogą skorzystać z rozszerzenia ESS (Emacs Speaks Statistics). R ceniony jest za dojrzałość i stabilność. Stanowi pewien standard w środowisku statystyków. Często wykorzystywany jest też w innych dziedzinach nauki, np. biologii.

Wpis ten nie jest kursem R, a jedynie niewielkim pokazem możliwości środowiska R i pakietu Sweave. Mnóstwo informacji na temat R-project znajduje się w internecie (również w języku polskim). Ze swojej strony polecam dwie świetne pozycje wydanictwa O'REILLY: R Cookbook oraz R in a Nutshell.

Instalacja i pierwsze uruchomienie

Wymagania: Zainstalowane środowisko LaTeX, np. MiKTeX dla Windows.

Instalacja R w środowisku Windows nie wyróżnia się niczym szczególnym. Pobieramy instalator i instalujemy podobnie jak inne programy. Sweave jest aktualnie częścią pakietu R.

Sweave

Sweave można zapisać matematycznie jako Sweave = R . LaTeX, gdyż jest to w pewnym sensie złożenie R i LaTeX-a. Ściśle rzecz ujmując, Sweave jest narzędziem, które pozwala na osadzenie kodu R w dokumentach LaTeX. Celem Sweave jest tworzenie dynamicznych raportów, które są automatycznie aktualizowane, jeśli dane lub przeprowadzana analiza ulega zmianie.

Dokumenty Sweave posiadają zazwyczaj rozszerzenie .Rnw, .rnw, .Snw, .snw. Fragmenty kodu R zawarte w tych plikach są wykonywane w R, a rezultaty, wykresy, tabele itp. automatycznie wstawiane w końcowym dokumencie -- czyli pliku .tex, który wystarczy skompilować przy pomocy LaTeX-a.

Zasada działania polecenia Sweave:

foo.snw -> (Sweave) -> foo.tex -> (PDFLaTeX) -> foo.pdf

Fragmenty kodu R zaczynamy od znacznika <<name>>= lub po prostu <<>>=, a kończymy znakiem @. Nazwane fragmenty kodu możemy wykorzystać ponownie przy pomocy <<name>>. Cała reszta dokumentu jest traktowana przez R jako komentarz.

Innym sposobem zapisu (bardziej intuicyjnym dla użytkowników LaTeX-a) są znaczniki \begin{Scode} \end{Scode} (Scode, ponieważ R jest dialektem języka S). Pliki uwzględniające tę formę zapisu posiadają najczęściej rozszerzenie .Stex.

Ten opis powinien wystarczyć, aby rozpocząć pracę ze Sweave. Cała reszta to kwestia nauki LaTeX-a i R. Jeśli znasz już podstawy LaTeX-a szybko odkryjesz moc i wygodę drzemiącą w R.

Zalety Sweave

* Powtarzalność wyników * Efektywność * Niezawodność

Sweave wpisuje się w koncepcję Literate programming, o której była już mowa na tym blogu.

Przykład

Teorię najlepiej zrozumieć na przykładzie. Prześledźmy zatem najczęściej przytaczany przykład.

\documentclass[a4paper]{article}

\title{Sweave Example 1}
\author{Friedrich Leisch}

\begin{document}

\maketitle

In this example we embed parts of the examples from the
\texttt{kruskal.test} help page into a \LaTeX{} document:

<<>>=
data(airquality)
kruskal.test(Ozone ~ Month, data = airquality)
@
which shows that the location parameter of the Ozone 
distribution varies significantly from month to month. Finally we
include a boxplot of the data:

\begin{center}
<<fig=TRUE,echo=FALSE>>=
boxplot(Ozone ~ Month, data = airquality)
@
\end{center}

\end{document}

Przykład a) plik Snw

To samo przy użyciu znaczników Scode możemy zapisać jako:

\documentclass[a4paper]{article}

\title{Sweave Example 1}
\author{Friedrich Leisch}

\begin{document}

\maketitle

In this example we embed parts of the examples from the
\texttt{kruskal.test} help page into a \LaTeX{} document:

\begin{Scode}
data(airquality)
kruskal.test(Ozone ~ Month, data = airquality)
\end{Scode}
which shows that the location parameter of the Ozone 
distribution varies significantly from month to month. Finally we
include a boxplot of the data:

\begin{center}
\begin{Scode}{fig=TRUE,echo=FALSE}
boxplot(Ozone ~ Month, data = airquality)
\end{Scode}
\end{center}

\end{document}

Przykład b) Plik Stex

Opcja echo=FALSE oznacza, że fragment ten nie będzie zawarty w wynikowym pliku.

Zapisujemy przykład w wybranym katalogu, uruchamiamy R i wpisujemy polecenie:

Sweave("C:\\Users\\Krystian\\Desktop\\raport\\example-1.Snw")

uwzględniając właściwą ścieżkę. Po wciśnięciu klawisza Enter powinien pojawić się rezultat jak na zrzucie ekranu poniżej:

W wyniku działania polecenia w katalogu Dokumenty powstają dwa pliki: plik tex oraz plik pdf z wykresem.

Otwieramy plik tex w ulubionym edytorze LaTeX-a, kompilujemy przy pomocy PDFLaTeX i...

! LaTeX Error: File `Sweave.sty' not found.

Spokojnie, bez paniki;) Plik Sweave.sty znajduje się w katalogu R. Zwykle jest to [code]C:\Program Files\R\R-2.13.0\share\texmf\tex\latex\[/code] Skopiuj go do tego samego folderu, w którym znajduje się źródło .tex wygenerowane przez polecenie Sweave, czyli domyślnie Dokumenty w systemie Windows Vista/7.

Po kompilacji otrzymujemy następujący plik PDF.

Bonus

Programistów/hobbystów programowania w języku Python może zainteresować pakiet Pweave oraz pyreport. Literate programming with Python.

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.