Używamy cookies, aby ułatwić korzystanie z Portalu. Możesz określić warunki przechowywania, dostępu do plików cookies w Twojej przeglądarce. Dowiedz się więcej.
strona główna Strona główna | Nowości | Promocje | Zapowiedzi Twoje konto | Zarejestruj | Schowek | Kontakt | Pomoc
mapa działów
Szukaj: szukanie zaawansowane
Koszyk
Książki \ Programowanie \ Język R

Wydajne programowanie w R. Praktyczny przewodnik po lepszym programowaniu Język: 1

978-83-7541-352-6

Cena Brutto: 69.30

Cena netto: 66.00

Ilość:
Wersja: Drukowana
Autor Colin Gillespie, Robin Lovelace
Liczba_stron 242
Wydawnictwo O'Reilly Media
Oprawa miękka
Data_Wydania 2018-02-12
Wydajne programowanie w R. Praktyczny przewodnik po lepszym programowaniu

Istnieje wiele znakomitych materiałów dotyczących wizualizacji, analizy danych i tworzenia pakietów w języku R. Setki rozproszonych winiet, stron internetowych i forów wyjaśnia, jak należy korzystać z R w określonych domenach. Niewiele jednak zostało napisane o tym, jak w prosty sposób zapewnić efektywne działanie języka R – aż do teraz. Ten praktyczny podręcznik uczy nowych i doświadczonych użytkowników R, jak pisać w tym języku wydajny kod.

Bazując na swoim wieloletnim doświadczeniu w prowadzeniu kursów języka R, autorzy Colin Gillespie i Robin Lovelace dostarczają szereg praktycznych porad na wiele różnych tematów – od optymalizowania konfiguracji środowiska RStudio po wykorzystywanie języka C++ – które czynią z tej książki przydatną pozycję w zbiorze literatury dowolnego użytkownika R. Z treści podręcznika Wydajne programowanie w R z pewnością skorzystają nauczyciele akademiccy, użytkownicy biznesowi i programiści z wielu różnych środowisk.

  • Uzyskaj porady związane z konfigurowaniem środowiska programistycznego R
  • Poznaj ogólne koncepcje programowania i techniki kodowania w R
  • Zapoznaj się z elementami składowymi wydajnego przepływu pracy w R
  • Naucz się, jak wydajnie odczytywać i zapisywać dane w R
  • Zagłęb się w stolarce danych – kluczowej umiejętności czyszczenia surowych danych
  • Zoptymalizuj swój kod przy użyciu profilowania, standardowych trików oraz innych metod
  • Określ swoje możliwości sprzętowe w zakresie obsługi obliczeń R
  • Zmaksymalizuj korzyści płynące z programowania zespołowego
  • Przyspiesz swoją przemianę z hakera R w programistę R
Colin Gillespie jest starszym wykładowcą na Uniwersytecie w Newcastle w Wielkiej Brytanii. Jego zainteresowania badawcze obejmują obliczenia o wysokiej wydajności oraz statystykę bayesowską. Regularnie zatrudniany przez firmę Jumping Rivers (jumpingrivers.com) jako konsultant, uczy języka R od 2005 roku.
Robin Lovelace jest pracownikiem Instytutu Badań nad Transportem oraz Instytutu Analizy Danych Uniwersytetu w Leeds w Wielkiej Brytanii. Przez pięć lat wykorzystywał R w badaniach akademickich, zaś przez cztery lata uczył języka R na wszystkich poziomach. Wykorzystał też język R w kilku projektach realizowanych w ramach programu badań stosowanych.
“ Autorzy piszą czystą prozą, która daje zwięzłą i dobitną odpowiedź na pytanie »Dlaczego wydajne programowanie?«. Podwójny nacisk na programowanie i produktywność jest bardzo przydatny”
—Garrett Grolemund
Główny instruktor w RStudio oraz autor książek R for Data Science oraz Hands-on Programming with R
(O’Reilly)

Przedmowa . . . . . . . . . . . . . . . ix

1. Wprowadzenie. . . . . . . . . . . . . .1

Wymagania wstępne  . . . . . . . . . . . . . . . . .2

Dla kogo jest ta książka i jak z niej korzystać?. . . . . . . . . . . .2

Czym jest wydajność?  . . . . . . . . . . . . . . . .4

Czym jest wydajne programowanie w R?5

Dlaczego wydajność? . . . . . . . . . . . . . . . . .7

Umiejętności uniwersalne zapewniające wydajność . . . . .. . . . .8

Pisanie bezwzrokowe  . . . . . . . . . . . . . .8

Spójny styl i konwencje kodowania  . .9

Testy porównawcze i profilowanie  . . . .10

Wykonywanie testów porównawczych . . . . .. . . . .10

Przykład testu porównawczego  . . . .11

Profilowanie  . . . . . . . . . . . . . . . . . . . .12

Materiały do książki  . . . . . . . . . . . . . . . .15

Pakiet R . .15

Wersja online . . . . . . . . . . . . . . . . . . . .16

Lektura uzupełniająca  . . . . . . . . . . . . . . .16

2. Wydajna konfiguracja. . . . . . .17

Wymagania wstępne  . . . . . . . . . . . . . . . .18

Pięć głównych wskazówek dla zapewnienia wydajnej konfiguracji R . . . . . . . .18

System operacyjny  . . . . . . . . . . . . . . . . . .18

Monitorowanie systemu operacyjnego i zasobów . . . . . . . . .19

Wersje R . . . .22

Instalowanie R . . . . . . . . . . . . . . . . . . .22

Aktualizowanie R  . . . . . . . . . . . . . . . .23

Instalowanie pakietów R  . . . . . . . . . .24

Instalowanie pakietów R z zależnościami . . . . . . . . . . .25

Aktualizowanie pakietów R . . . . . . . .25

Uruchamianie R . . . . . . . . . . . . . . . . . . . .26

Argumenty uruchamiania R  . . . . . . .26

Przegląd plików startowych R . . . . . .27

Lokalizacja plików startowych  . . . . .28

Plik .Rprofile  . . . . . . . . . . . . . . . . . . . .30

Przykładowy plik .Rprofile  . . . . . . . .30

Plik .Renviron  . . . . . . . . . . . . . . . . . . .35

RStudio . . . . .37

Instalowanie i aktualizowanie RStudio . . . . .. . . . . . . .37

Układ paneli  . . . . . . . . . . . . . . . . . . . .38

Opcje programu RStudio . . . . . . . . . .40

Autouzupełnianie  . . . . . . . . . . . . . . . .41

Skróty klawiszowe . . . . . . . . . . . . . . . .43

Wyświetlanie obiektów i tabel . . . . . .44

Zarządzanie projektami . . . . . . . . . . .44

BLAS i alternatywne interpretery R  . . .46

Testowanie zysków wydajności po użyciu BLAS . . . . . . .47

Inne interpretery . . . . . . . . . . . . . . . . .48

Przydatne materiały  . . . . . . . . . . . . . .49

Lektura uzupełniająca  . . . . . . . . . . . . . . .49

3. Wydajne programowanie. . . .51

Wymagania wstępne  . . . . . . . . . . . . . . . .51

Pięć głównych wskazówek dla zapewnienia wydajnego programowania . . . . .51

Porady ogólne . . . . . . . . . . . . . . . . . . . . . .52

Przydział pamięci  . . . . . . . . . . . . . . . .53

Kod zwektoryzowany . . . . . . . . . . . . .54

Komunikacja z użytkownikiem . . . . . . .57

Błędy krytyczne: stop()  . . . . . . . . . . .57

Ostrzeżenia: warning()  . . . . . . . . . . .58

Wyjście informacyjne: message() i cat() . . . . . . . . . .59

Niewidoczne wartości zwracane . . . .59

Faktory . . . . .60

Porządkowanie  . . . . . . . . . . . . . . . . . .61

Stały zbiór kategorii  . . . . . . . . . . . . . .61

Rodzina funkcji apply  . . . . . . . . . . . . . . .62

Przykład: zbiór danych o filmach . . .64

Spójność typu  . . . . . . . . . . . . . . . . . . .65

Buforowanie zmiennych . . . . . . . . . . . . .66

Domknięcia funkcji  . . . . . . . . . . . . . .68

Kompilator kodu pośredniego . . . . . . . .70

Przykład: funkcja do obliczania średniej. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70

Kompilowanie kodu  . . . . . . . . . . . . . .71

Lektura uzupełniająca  . . . . . . . . . . . . . . .72

4. Wydajny przepływ pracy . . . .73

Wymagania wstępne  . . . . . . . . . . . . . . . .73

Pięć głównych wskazówek dla zapewnienia wydajnego przepływu pracy . . . .74

Typologia planowania projektów  . . . . .74

Planowanie i zarządzanie projektem . . .76

Podział pracy . . . . . . . . . . . . . . . . . . . .78

Przepływ pracy a kryteria SMART . .79

Wizualizowanie planów w R  . . . . . . .80

Wybór pakietów . . . . . . . . . . . . . . . . . . . .81

Wyszukiwanie pakietów  . . . . . . . . . .83

Jak wybierać pakiety? . . . . . . . . . . . . .83

Publikacja . . .85

Tworzenie dynamicznych dokumentów przy użyciu R Markdown . . . . . . .86

Pakiety R .88

Lektura uzupełniająca  . . . . . . . . . . . . . . .90

5. Wydajne wejście/wyjście . . . .91

Wymagania wstępne  . . . . . . . . . . . . . . . .92

Pięć głównych wskazówek dla zapewnienia wydajnego wejścia/wyjścia danych 92

Uniwersalne importowanie danych z użyciem rio . . . . . . . . . . . . . . . . . . . . . . . .93

Formaty zwykłego tekstu  . . . . . . . . . . . .94

Różnice pomiędzy fread() i read_csv() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .97

Wstępne przetwarzanie tekstu poza R. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100

Formaty plików binarnych  . . . . . . . . . .100

Natywne formaty binarne: Rdata czy Rds? . . . . . . . . . . . . . . . . . . . . . . . . . . .101

Format pliku Feather  . . . . . . . . . . . .102

Testy porównawcze formatów plików binarnych. . . . . . . . . . . . . . . . . . . . . .102

Protocol Buffers  . . . . . . . . . . . . . . . .104

Pozyskiwanie danych z Internetu  . . . .104

Uzyskiwanie dostępu do danych przechowywanych w pakietach . . . . . . . . . .105

Lektura uzupełniająca  . . . . . . . . . . . . . .106

6. Wydajna stolarka danych . . .107

Wymagania wstępne  . . . . . . . . . . . . . . .108

Pięć głównych wskazówek dla zapewnienia wydajnej stolarki danych . . . . . .108

Wydajne ramki danych z wykorzystaniem pakietu tibble . . . . . . . . . . . . . . . . .109

Oczyszczanie danych za pomocą pakietu tidyr i wyrażeń regularnych. . . . . .110

Tworzenie wąskich tabel za pomocą funkcji gather() . . . . . . . . . . . . . . . . . .112

Podział zmiennych za pomocą funkcji separate() . . . . . . . . . . . . . . . . . . . . .113

Pozostałe funkcje tidyr . . . . . . . . . . .114

Wyrażenia regularne  . . . . . . . . . . . .114

Wydajne przetwarzanie danych za pomocą pakietu dplyr. . . . . . . . . . . . . . . . .117

Modyfikowanie nazw kolumn  . . . .119

Modyfikowanie klas kolumn . . . . . .120

Filtrowanie wierszy . . . . . . . . . . . . . .121

Łączenie operacji  . . . . . . . . . . . . . . .122

Agregowanie danych  . . . . . . . . . . . .124

Niestandardowa ewaluacja  . . . . . . .127

Łączenie zbiorów danych  . . . . . . . . . . .128

Praca z bazami danych  . . . . . . . . . . . . .130

Bazy danych i dplyr  . . . . . . . . . . . . .132

Przetwarzanie danych przy użyciu data.table . . . . . . . . . . . . . . . . . . . . . . . . . . .134

Lektura uzupełniająca  . . . . . . . . . . . . . .137

7. Wydajna optymalizacja . . . .139

Wymagania wstępne  . . . . . . . . . . . . . . .140

Pięć głównych wskazówek dla zapewnienia wydajnej optymalizacji . . . . . . . .140

Profilowanie kodu  . . . . . . . . . . . . . . . . .141

Rozpoczynanie pracy z pakietem profvis . . . . . . . . . . . . . . . . . . . . . . . . . . . .141

Przykład: symulacja gry Monopol  .142

Wydajny język R  . . . . . . . . . . . . . . . . . .144

Funkcja if() kontra ifelse() . . . . . . . .144

Sortowanie i porządkowanie . . . . . .145

Odwracanie kolejności elementów .146

Które indeksy mają wartość TRUE?146

Konwertowanie faktorów na wartości numeryczne. . . . . . . . . . . . . . . . . . . .147

Operatory logiczne AND i OR  . . . .147

Operacje na wierszach i kolumnach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .147

Funkcje is.na() i anyNA()  . . . . . . . .148

Macierze.148

Przykład: optymalizowanie funkcji move_square() . . . . . . . . . . . . . . . . . . . . . .151

Przetwarzanie równoległe  . . . . . . . . . .153

Współbieżne wersje funkcji z rodziny Apply . . . . . . . . . . . . . . . . . . . . . . . . .153

Przykład: Węże i drabiny  . . . . . . . . .154

Ostrożne wychodzenie z funkcji  . .155

Równoległy kod w systemach Linux i OS X . . . . . . . . . . . . . . . . . . . . . . . . . .155

Rcpp. . . . . . .156

Prosta funkcja w C++  . . . . . . . . . . .157

Polecenie cppFunction()  . . . . . . . . .158

Typy danych w C++  . . . . . . . . . . . . .159

Funkcja sourceCpp()  . . . . . . . . . . . .159

Wektory i pętle  . . . . . . . . . . . . . . . . .161

Macierze.164

C++ z dodatkiem lukru składniowego . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .164

Materiały dla Rcpp  . . . . . . . . . . . . . .165

Lektura uzupełniająca  . . . . . . . . . . . . . .165

8. Wydajny sprzęt . . . . . . . . . . .167

Wymagania wstępne  . . . . . . . . . . . . . . .167

Pięć głównych porad dotyczących wydajnego sprzętu. . . . . . . . . . . . . . . . . . . .167

Informacje podstawowe: Czym jest bajt? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .168

Pamięć RAM  . . . . . . . . . . . . . . . . . . . . .169

Dyski twarde: HDD kontra SSD  . . . . .172

Systemy operacyjne: 32- i 64-bitowe . .173

Procesor . . .174

Obliczenia w chmurze . . . . . . . . . . . . . .176

Amazon EC2  . . . . . . . . . . . . . . . . . . .176

9. Wydajna współpraca. . . . . . .177

Wymagania wstępne  . . . . . . . . . . . . . . .178

Pięć głównych wskazówek dla zapewnienia wydajnej współpracy. . . . . . . . . .178

Styl kodowania . . . . . . . . . . . . . . . . . . . .178

Formatowanie kodu w RStudio  . . .179

Nazwy plików  . . . . . . . . . . . . . . . . . .180

Wczytywanie pakietów  . . . . . . . . . .180

Komentowanie  . . . . . . . . . . . . . . . . .180

Nazwy obiektów  . . . . . . . . . . . . . . . .181

Przykładowy pakiet  . . . . . . . . . . . . .182

Operacje przypisania  . . . . . . . . . . . .183

Znaki odstępu  . . . . . . . . . . . . . . . . . .183

Wcięcia . .184

Nawiasy klamrowe  . . . . . . . . . . . . . .184

Kontrola wersji . . . . . . . . . . . . . . . . . . . .185

Zatwierdzanie kodu  . . . . . . . . . . . . .185

Integracja Git w RStudio  . . . . . . . . .186

GitHub . .187

Gałęzie, rozwidlenia, pobieranie i klonowanie. . . . . . . . . . . . . . . . . . . . . . . .187

Przegląd kodu . . . . . . . . . . . . . . . . . . . . .189

Lektura uzupełniająca  . . . . . . . . . . . . . .190

10. Wydajne uczenie się . . . . . . .191

Wymagania wstępne  . . . . . . . . . . . . . . .191

Pięć głównych wskazówek dla wydajnego uczenia się . . . . . . . . . . . . . . . . . . . .191

Korzystanie z wewnętrznej pomocy R 192

Wyszukiwanie tematów w R  . . . . . .193

Wyszukiwanie i korzystanie z winiet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .195

Uzyskiwanie pomocy na temat funkcji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .196

Czytanie kodu źródłowego R  . . . . .198

swirl . . . .199

Materiały online . . . . . . . . . . . . . . . . . . .199

Stack Overflow  . . . . . . . . . . . . . . . . .201

Listy mailingowe i grupy  . . . . . . . . .201

Zadawanie pytań  . . . . . . . . . . . . . . . . . .202

Minimalny zbiór danych  . . . . . . . . .202

Minimalny przykład . . . . . . . . . . . . .203

Pogłębianie wiedzy  . . . . . . . . . . . . . . . .203

Szerzenie wiedzy  . . . . . . . . . . . . . . . . . .205

Lektura uzupełniająca  . . . . . . . . . . . . . .206

Dodatek A. Wykorzystywane pakiety  . . . . . . . . . . . . . . . . . .207

Dodatek B. Lektura uzupełniająca  . . . . . . . . . . . . . . . . . . . . .211

Indeks . . . . . . . . . . . . . . . . . . .215

O autorach . . . . . . . . . . . . . . .224

Kolofon . . . . . . . . . . . . . . . . . .225

powrót
 
Produkty Podobne
Zestaw 2 książek do języka R (Język R dla każdego + Wydajne programowanie w R)
Wydajne programowanie w R. Praktyczny przewodnik po lepszym programowaniu
Język R dla każdego: zaawansowane analizy i grafika statystyczna
Język R. Kompletny zestaw narzędzi dla analityków danych
Więcej produktów