"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