"Programowanie w języku R."
Identyfikator Librowy: 104240
Spis treści
Przedmowa 14
I Podstawy 20
1. Środowisko R i program RStudio 22
1.1. Cechy języka i środowiska R 22
1.2. Organizacja pracy w R i RStudio 23
1.2.1. Konsola R 24
1.2.2. Program RStudio 25
1.2.3. Pierwsze kroki w trybie interaktywnym 27
1.2.4. Edytor skryptów 29
1.2.5. System pomocy 30
2. Typy atomowe: wektory i NULL 32
2.1. Klasyfikacja typów obiektów w języku R 32
2.2. Wektory atomowe 33
2.2.1. Wektory wartości logicznych 33
2.2.2. Wektory liczbowe 36
2.2.3. Wektory napisów 37
2.2.4. Pozostałe typy wektorów atomowych i ich hierarchia 38
2.3. Tworzenie obiektów nazwanych 44
2.4. Braki danych, wartości nieskończone i nie-liczby 48
2.5. Typ pusty (NULL) 50
3. Operacje na wektorach 53
3.1. Podstawowe operatory 53
3.1.1. Operatory arytmetyczne 54
3.1.2. Operatory logiczne 57
3.1.3. Operatory relacyjne 58
3.1.4. Priorytety operatorów 60
3.2. Indeksowanie wektorów. Filtrowanie danych 61
3.2.1. Rodzaje indeksatorów 62
3.2.2. Modyfikowanie wybranych elementów 64
3.3. Przegląd funkcji wbudowanych 65
3.3.1. Zwektoryzowane funkcje matematyczne 65
3.3.2. Agregacja danych 70
3.3.3. Operacje na sąsiadujących elementach wektorów 73
3.3.4. Wyszukiwanie indeksów i wybór elementów wektorów 74
3.3.5. Operacje oparte na permutowaniu elementów wektorów 76
3.3.6. Operacje na zbiorach 78
3.3.7. Podstawowe operacje na napisach 79
4. Listy 82
4.1. Tworzenie list 82
4.2. Indeksowanie list 85
4.2.1. Operator „[” 85
4.2.2. Operator „[[” 85
4.2.3. Modyfikowanie zawartości list 86
4.3. Wybrane operacje na listach 89
4.3.1. Łączenie, rozwijanie i powielanie list 89
4.3.2. Wywoływanie funkcji na wszystkich elementach listy 92
5. Funkcje 97
5.1. Tworzenie obiektów typu funkcja 98
5.1.1. Bloki wyrażeń 100
5.1.2. Sprawdzanie poprawności argumentów 103
5.1.3. Kilka uwag dla projektantów funkcji 106
5.1.4. Biblioteki funkcji w plikach R 107
5.1.5. Odwoływanie się do funkcji z pakietów R 108
5.2. Zasięg nazw w funkcjach 109
5.3. Parametry i argumenty 111
5.3.1. Przekazywanie argumentów przez wartość 111
5.3.2. Parametry z argumentami domyślnymi 112
5.3.3. Parametr specjalny „...” 113
6. Atrybuty obiektów 116
6.1. Nadawanie i odczytywanie atrybutów 116
6.2. Atrybuty specjalne 119
6.2.1. Atrybut comment 120
6.2.2. Atrybut names. Wektory z etykietami 120
6.2.3. Atrybut class. Wstęp do programowania obiektowego S3 125
6.3. O zachowywaniu i gubieniu atrybutów przez funkcje 130
7. Typy złożone 133
7.1. Macierze i tablice 133
7.1.1. Tworzenie macierzy 133
7.1.2. Indeksowanie macierzy 137
7.1.3. Tablice jako uogólnienie macierzy 139
7.1.4. Atrybut dimnames. Etykietowanie wierszy i kolumn 140
7.1.5. Reprezentacja macierzy i tablic 141
7.1.6. Wybrane operacje na macierzach 145
7.2. Szeregi czasowe 148
7.3. Czynniki 150
7.3.1. Tworzenie czynników 151
7.3.2. Reprezentacja czynników 151
7.3.3. Czynniki a wektory napisów 153
7.3.4. Wybrane operacje na czynnikach 154
7.4. Ramki danych 157
7.4.1. Reprezentacja ramek danych 158
7.4.2. Operatory indeksowania. Filtrowanie danych 160
7.4.3. Wybrane operacje na ramkach danych 163
8. Pielęgnowanie kodu 175
8.1. Organizacja kodu 176
8.1.1. Projekty i skrypty 176
8.1.2. Tworzenie własnych pakietów R 177
8.2. Obsługa wyjątków 178
8.2.1. Rodzaje wyjątków 178
8.2.2. Obsługa komunikatów diagnostycznych i ostrzeżeń 179
8.2.3. Obsługa błędów 180
8.3. Testowanie oprogramowania 181
8.4. Debugowanie kodu 184
8.5. Pomiar i poprawa wydajności kodu 186
8.5.1. Badanie krótkich fragmentów kodu 186
8.5.2. Profilowanie aplikacji 187
8.5.3. Złożoność czasowa i pamięciowa algorytmów 190
9. Modyfikacja przepływu sterowania 193
9.1. Wyrażenia warunkowe if i if...else 194
9.1.1. Określanie testowanego warunku 197
9.1.2. Wartości zwracane przez wyrażenia warunkowe 200
9.1.3. Funkcja return(). Rekurencja 201
9.2. Pętle 203
9.2.1. Pętla while 203
9.2.2. Pętla repeat 208
9.2.3. Pętla for 209
9.3. Uwagi na temat wydajności pętli 212
II Przygotowanie danych 220
10. Przetwarzanie napisów 222
10.1. Podstawowe operacje na napisach 222
10.1.1. Wyznaczanie długości napisów 222
10.1.2. Porównywanie napisów 223
10.1.3. Łączenie i powielanie napisów 225
10.1.4. Przycinanie i wypełnianie 226
10.1.5. Formowanie napisów na podstawie innych obiektów 227
10.1.6. Zmiana pojedynczych znaków 230
10.1.7. Wyznaczanie podnapisów 230
10.1.8. Pozostałe operacje 232
10.2. Wyszukiwanie wzorca 233
10.2.1. Wzorce ustalone 234
10.2.2. Wyrażenia regularne 237
10.2.3. Wzorce rozmyte 248
10.3. Data i czas 249
10.3.1. Reprezentacja dat 249
10.3.2. Reprezentacja czasu 250
10.3.3. Operacje arytmetyczne 252
10.3.4. Konwersja daty i czasu 253
10.4. Reprezentacja napisów 254
10.4.1. Kodowanie ASCII 254
10.4.2. 8-bitowe kodowania polskich liter diakrytyzowanych 256
10.4.3. Kodowanie UTF-8 257
10.4.4. Konwersja kodowań 258
11. Przetwarzanie plików 260
11.1. Podstawowe operacje na plikach i katalogach 260
11.1.1. Ścieżki dostępu do plików i katalogów 260
11.1.2. Bieżący katalog roboczy. Ścieżki względne 262
11.1.3. Informacje o plikach i katalogach 263
11.1.4. Wybrane działania na plikach i katalogach 264
11.1.5. Wyszukiwanie plików i katalogów 265
11.2. Serializacja i deserializacja obiektów 267
11.3. Popularne formaty plików 268
11.3.1. Pliki CSV 269
11.3.2. Pliki JSON 273
11.3.3. Pliki XML 274
11.4. Dostęp do baz danych SQL 275
11.5. Dowolne pliki tekstowe 276
11.5.1. Odczyt plików tekstowych 277
11.5.2. Zapis plików tekstowych 277
11.6. Połączenia 278
11.6.1. URL, czyli ujednolicony lokalizator zasobów 278
11.6.2. Tworzenie połączeń 279
11.6.3. Otwieranie i zamykanie połączeń 281
11.6.4. Odczyt danych z połączeń 281
11.6.5. Zapis danych do połączeń 284
11.6.6. Zarządzanie otwartymi połączeniami 285
11.6.7. Nota o plikach binarnych 286
III Prezentacja wyników 288
12. Tworzenie wykresów 290
12.1. Schemat systemów graficznych w środowisku R 290
12.2. Podstawy użycia pakietu graphics 292
12.2.1. Strona i rysunki 293
12.2.2. Parametry graficzne 294
12.2.3. Rysowanie punktów i odcinków (łamanych) 298
12.2.4. Barwy 301
12.2.5. Rysowanie wielokątów 303
12.2.6. Wypisywanie tekstu 305
12.2.7. Układ współrzędnych 306
12.2.8. Tworzenie wielu rysunków na jednej stronie 310
12.3. Wybrane wysokopoziomowe operacje graficzne 311
12.3.1. Rysowanie układu współrzędnych 311
12.3.2. Adnotacje i legenda 312
12.3.3. Wizualizacja danych jednowymiarowych 314
12.3.4. Wizualizacja danych dwuwymiarowych 317
12.3.5. Wizualizacja danych wielowymiarowych 321
12.4. Urządzenia graficzne 323
12.4.1. Urządzenia pdf(), svg() i postscript() 326
12.4.2. Urządzenia png() i jpeg() 326
13. Generowanie raportów przy użyciu pakietu knitr 328
13.1. Język Markdown 328
13.2. Podstawy użycia pakietu knitr 335
13.3. Ustawienia wstawek 339
13.3.1. Identyfikatory wstawek i zależności między nimi 339
13.3.2. Pamięć podręczna 340
13.3.3. Wyświetlanie kodu i wyników tekstowych 341
13.3.4. Rysunki 342
13.3.5. Ustawienia globalne 343
IV Zastosowania 354
14. Obliczenia numeryczne 356
14.1. Wprowadzenie 356
14.2. Algebra wektorów i macierzy 359
14.2.1. Podstawowe operacje 360
14.2.2. Normy 361
14.2.3. Metryki i inne odległości 363
14.2.4. Wektory i wartości własne 367
14.2.5. Rozkład Choleskiego 369
14.2.6. Rozkład QR 370
14.2.7. Rozkład SVD 373
14.3. Różniczkowanie i całkowanie 375
14.3.1. Różniczkowanie numeryczne 375
14.3.2. Całkowanie numeryczne 378
14.4. Optymalizacja 379
14.4.1. Algorytmy programowania matematycznego 381
14.4.2. Algorytmy optymalizacji ciągłej ogólnego zastosowania 384
14.5. Interpolacja i wygładzanie 387
14.5.1. Interpolacja jednowymiarowa 387
14.5.2. Interpolacja dwuwymiarowa 388
14.5.3. Wygładzanie 389
14.6. Rozwiązywanie (układów) równań (nie)liniowych 391
14.6.1. Wyznaczanie miejsc zerowych funkcji jednej zmiennej 391
14.6.2. Rozwiązywanie układów równań liniowych 393
14.6.3. Rozwiązywanie układów równań nieliniowych 393
15. Symulacje 395
15.1. Generowanie liczb (pseudo)losowych 395
15.1.1. Źródła (pseudo)losowości 396
15.1.2. Określanie ziarna generatora 397
15.1.3. Szczegóły działania generatora 398
15.2. Rozkłady prawdopodobieństwa 400
15.2.1. Nazwy funkcji związanych z rozkładami 400
15.2.2. Wybrane jednowymiarowe rozkłady prawdopodobieństwa 401
15.2.3. Zmienne losowe wielowymiarowe 405
15.3. Przykładowe eksperymenty symulacyjne 409
15.3.1. Badanie mocy testu Shapiro–Wilka 410
15.3.2. Własności estymatorów parametrów rozkładu Gamma 411
15.3.3. Całkowanie Monte Carlo 415
15.3.4. Kroswalidacja klasyfikatora 417
V Zagadnienia zaawansowane 420
16. Zarządzenie środowiskiem R 422
16.1. Podstawowe informacje 422
16.1.1. Informacje o środowisku R 422
16.1.2. Informacje o systemie 425
16.1.3. Uruchamianie i zamykanie środowiska R 426
16.2. Opcje globalne 427
16.1.4. Historia poleceń 427
16.3. Ustawienia lokalizacyjne 431
16.4. Rozszerzanie możliwości środowiska R 434
16.4.1. Instalacja i aktualizacja pakietów 435
16.4.2. Wywoływanie innych programów 440
16.5. Zarządzanie pamięcią 441
16.5.1. Informacja o rozmiarze obiektów 441
16.5.2. Kopiowanie na żądanie 443
16.6. Typ podstawowy, tryb a klasa obiektów 444
16.5.3. Automatyczne odśmiecanie pamięci 444
17.1.Środowiska jako zbiory obiektów 447
17. Środowiska 447
17.1.1. Podstawowe operacje na obiektach w środowisku 448
17.1.2. Środowiska a listy 450
17.1.3. Przekazywanie środowisk funkcjom 452
17.2. Wskaźniki na środowiska otaczające 454
17.2.1. Przypadek ręcznie tworzonych środowisk 454
17.2.2. ´Ścieżka wyszukiwania 455
17.2.3. Przestrzenie nazw i środowiska eksportowane przez pakiety 460
18. Syntaktyka i semantyka języka R 461
18.1. Obiekty reprezentujące wyrażenia języka R 461
18.1.1. Parser 462
18.1.2. Cytowanie 465
18.1.3. Wywołania, czyli wyrażenia złożone 465
18.2. środowiskowy model obliczeń 470
18.2.1. Ewaluacja wyrażeń 471
18.2.2. Bieżące środowisko ewaluacyjne 473
18.3. Ewaluacja wyrażeń w obrębie funkcji 476
18.3.1. Lokalne środowiska ewaluacyjne 478
18.3.2. Środowiska otaczające lokalne środowiska ewaluacyjne 479
18.3.3. Środowiska wywołujące 483
18.3.4. Ewaluacja argumentów 484
18.4. Formuły 490
18.4.1. Przykłady funkcji stosujących argumenty typu formuła 490
18.4.2. Formuły jako wywołania 492
18.4.3. Przetwarzanie formuł 493
19. Programowanie zorientowane obiektowo 495
19.1. Paradygmaty programowania obiektowego 495
19.2. Klasy S3 497
19.2.1. Określanie klasy obiektu 498
19.2.2. Ekspediowanie metod 498
19.2.3. Przeciążanie metod 501
19.3. Klasy S4 502
19.3.1. Definiowanie klas i tworzenie obiektów 503
19.3.2. Definiowanie funkcji generycznych i metod 506
19.4. Klasy referencyjne (RC) 510
19.5. Specjalne rodzaje funkcji 511
19.5.1. Funkcje podstawieniowe 511
19.5.2. Przeciążanie operatorów 513
19.5.3. Wbudowane grupy funkcji generycznych 514
20. Integracja R i C++ przy użyciu pakietu Rcpp 517
20.1. Wprowadzenie 518
20.1.1. Tryby pracy z Rcpp 518
20.1.2. Podstawy składni języka C++ 522
20.2. Operacje na wektorach atomowych 528
20.2.1. Dostęp do wektorów 528
20.2.2. Tworzenie wektorów 531
20.2.3. Kopiowanie płytkie i głębokie 532
20.2.4. Braki danych 534
20.2.5. Przegląd funkcji z R/C API 536
20.2.6. Przegląd funkcji i metod z pakietu Rcpp 539
20.3. Operacje na pozostałych typach obiektów 540
20.3.1. Listy 540
20.3.2. Funkcje 542
20.3.3. Atrybuty obiektów 543
20.3.4. Obiekty typów złożonych 544
20.3.5. Wskaźniki 546
Bibliografia 551
Skorowidz 556