R jest językiem i środowiskiem dla obliczeń statystycznych i grafiki …. R zapewnia szeroki zakres technik statystycznych (modelowanie liniowe i nieliniowe, klasyczne testy statystyczne, analiza szeregów czasowych, klasyfikacja, grupowanie, …) i technik graficznych, i jest wysoce rozciągliwy. Język S jest często wybranym narzędziem do badań w metodologii statystycznej, a R zapewnia ścieżkę Open Source do uczestnictwa w tym działaniu
—R Projekt R dla obliczeń statystycznych, http://www.r-project.org/
Najlepszą rzeczą w R jest to, że został opracowany przez statystyków. Najgorsze w R jest to, że … opracowali go statystycy.
—Bo Cowgill, Google, Inc.
R to niezwykle potężny język do manipulacji i analizy danych. Jego gwałtowny wzrost popularności w społecznościach zajmujących się analizą danych i uczeniem maszynowym sprawił, że stała się de facto lingua franca dla analityki. Sukces R w społeczności zajmującej się analizą danych wynika z dwóch czynników opisanych w poprzednich epitafiach: R zapewnia większość mocy technicznej wymaganej przez statystyków w języku domyślnym, a R jest wspierany przez społeczność statystyków, którzy są również wielbicielami open source. Język opracowany specjalnie do obliczeń statystycznych ma wiele zalet technicznych. Jak zauważa opis projektu R, język zapewnia most typu open source do S, który zawiera wiele wysoce specjalistycznych operacji statystycznych jako funkcji podstawowych. Na przykład, aby wykonać podstawową regresję liniową w R, należy po prostu przekazać dane do funkcji lm, która następnie zwraca obiekt zawierający szczegółowe informacje o regresji (współczynniki, błędy standardowe, wartości rezydualne itp.). Dane te można następnie wizualizować, przekazując wyniki do funkcji wykresu, która została zaprojektowana do wizualizacji wyników tej analizy. W innych językach z dużymi społecznościami naukowymi, takimi jak Python, powielanie funkcjonalności lm wymaga użycia kilku bibliotek zewnętrznych do reprezentowania danych (NumPy), przeprowadzania analizy (SciPy) i wizualizacji wyników (matplotlib). Jak zobaczymy póżniej, takie zaawansowane analizy można przeprowadzić za pomocą pojedynczego wiersza kodu w R. Ponadto, podobnie jak w innych naukowych środowiskach obliczeniowych, podstawowym typem danych w R jest wektor. Wektory można agregować i organizować na różne sposoby, ale u podstaw wszystkie dane są reprezentowane w ten sposób. Ta stosunkowo sztywna perspektywa struktur danych może być ograniczająca, ale jest również logiczna, biorąc pod uwagę zastosowanie języka. Najczęściej stosowaną strukturą danych w R jest ramka danych, którą można traktować jako macierz z atrybutami, wewnętrznie zdefiniowaną strukturę „arkusza kalkulacyjnego” lub relacyjną strukturę bazy danych w rdzeniu języka. Zasadniczo ramka danych jest po prostu kolumnową agregacją wektorów, dla których R zapewnia określoną funkcjonalność, co czyni go idealnym do pracy z dowolnym rodzajem danych.
Przy całej swojej mocy R ma również swoje wady. R nie skaluje się dobrze z dużymi danymi i chociaż podjęto wiele wysiłków, aby rozwiązać ten problem, pozostaje poważnym problemem. Na potrzeby analiz przypadków dokonamy przeglądu, jednak nie będzie to stanowić problemu. Zestawy danych, których będziemy używać, są stosunkowo małe, a wszystkie systemy, które zbudujemy, są prototypami lub modelami sprawdzającymi koncepcję. To rozróżnienie jest ważne, ponieważ jeśli zamierzasz budować systemy uczenia maszynowego na poziomie przedsiębiorstwa w skali Google lub Facebook, R nie jest właściwym rozwiązaniem. W rzeczywistości firmy takie jak Google i Facebook często używają R jako „piaskownicy danych” do zabawy z danymi i eksperymentowania z nowymi metodami uczenia maszynowego. Jeśli jeden z tych eksperymentów przyniesie owoce, inżynierowie będą próbowali powielić funkcjonalność zaprojektowaną w języku R w bardziej odpowiednim języku, takim jak C.
Ten etos eksperymentów wywołał także ogromne poczucie wspólnoty wokół języka. Korzyści społeczne płynące z języka R zależą od tej dużej i rosnącej społeczności ekspertów używających języka i przyczyniających się do niego. Jak wspomina Bo Cowgill, R wynikało z chęci statystyków do posiadania środowiska komputerowego, które spełniałoby ich konkretne potrzeby. Dlatego wielu użytkowników R. jest ekspertami w swoich różnych dziedzinach. Obejmuje to niezwykle różnorodny zestaw dyscyplin, w tym matematykę, statystykę, biologię, chemię, fizykę, psychologię, ekonomię i nauki polityczne, by wymienić tylko kilka. Ta społeczność ekspertów zbudowała ogromną kolekcję pakietów oprócz obszernych podstawowych funkcji w R. W czasie pisania CRAN, repozytorium R dla pakietów, zawierało ponad 2800 pakietów. W poniższych studiach przypadków wykorzystamy wiele najpopularniejszych pakietów, ale to tylko zarysuje powierzchnię tego, co jest możliwe dzięki R. Wreszcie, chociaż druga część oświadczenia Cowgilla może wydawać się nieco groźna, dodatkowo podkreśla siłę społeczności R. Jak zobaczymy, język R ma szczególnie dziwną składnię, która jest pełna kodujących „gotchas”, które mogą odstraszyć nawet doświadczonych programistów. Ale wszystkie problemy gramatyczne związane z językiem można w końcu przezwyciężyć, szczególnie dla wytrwałych hakerów. Dla niestatystów trudniejsze jest liberalne założenie, że zna metody statystyczne i matematyczne wbudowane w funkcje R. Korzystając z funkcji lm jako przykładu, gdybyś nigdy nie przeprowadzał regresji liniowej, nie wiedziałbyś, aby szukać współczynników, błędów standardowych lub wartości resztkowych w wynikach. Nie wiedziałbyś też, jak interpretować te wyniki. Ale ponieważ język jest open source, zawsze możesz spojrzeć na kod funkcji, aby zobaczyć dokładnie, co ona robi. Częścią tego, co spróbujemy osiągnąć, jest zbadanie wielu z tych funkcji w kontekście uczenia maszynowego, ale ta eksploracja ostatecznie dotyczy tylko niewielkiego podzbioru tego, co możesz zrobić w R. Na szczęście społeczność R jest pełna ludzi, którzy pomogą Ci zrozumieć nie tylko język, ale także metody w nim zaimplementowane. Pozostała część skupia się na przygotowaniu do korzystania z R i korzystaniu z niego. Obejmuje to pobieranie i instalowanie R, a także instalowanie pakietów R. Kończymy miniaturowym studium przypadku, które posłuży jako wprowadzenie do niektórych idiomów R, które wykorzystamy w późniejszych sekcjach. Obejmuje to problemy z ładowaniem, czyszczeniem, organizowaniem i analizowaniem danych.