Podstawy programowania w R / Zajęcia 2
Table of Contents
1 Wektory
1.1 Tworzenie wektorów
Co to jest wektor. Wektor jest to uporządkowana ciąg danych, np. \( ( x_1, x_2, \ldots, x_n )\).
W R każda liczba to jest już wektor. Pytanie jak łączy się wektory.
### Prosty wektor 2 ### Laczenie wektorow c( 2, 5, 8, 20) ### Laczenie wektorow 2 x <- c( 1,2,3) c( x, x, x) ### Laczenie wektorow 3 x <- c( 1, 2, 3) y <- c( 7, 8) c( x, y, x, y)
1.2 Generowanie wektorów
Tutaj są trzy komendy:
:
seq()
rep()
### Operator : 1:5 1.13:5 5:1 ### Operator : jest mocny -1 * 2:5 1+2:5 1:5-1 -1:5 1:2^2 ### Operator : i funkcje 1:rbinom( 1, 10, 0.5)
Wykorzystanie funkcji seq()
do tworzenie wykresu podanej funkcji.
### Funkcja seq() seq( 0, 1, .1) seq( 0, 1, length.out = 13) ### Przyklad x <- seq(-pi, pi, length.out = 50) y <- sin(x) plot( x, y, type = "o", pch = 20, col = "blue")
Wykorzystanie funkcji rep()
.
### Proste wykorzystanie rep(3, 5) rep( 1:3, 5) rep( 1:4, 5) ### Wykres sezonowy liczbaLat <- 50 liczbaOkresow <- 4 dane <- rnorm( liczbaOkresow * liczbaLat) sez <- c(1, -.5, -1, 0) dane.sez <- dane + sez plot( dane.sez, type = "o", pch = 20, col = "blue") x <- rep( 1:liczbaOkresow, liczbaLat) plot( jitter( x), dane.sez, pch = 20, cex = 2, col = "blue") abline( v = 1:liczbaOkresow+.5)
1.3 Indeksowanie wektorów
Trzy rodzaje indeksowanie:
- przez podanie pozycji
- przez podanie wektora logicznego
- przez nazwy (trzeba je nadać)
Przykład indeksowania przez podanie pozycji.
### Indeksowanie przez pozycje x <- 5:1 x[1] x[c(1,3,5)] x[c(1, 2, 3)] x[1:3] x[3:5] ### Usuwanie elementow wektora x[-1] x[-(2:4)]
Przykład indeksowania przez wektor logiczny.
### Wektory logiczne x <- 5:1 ind <- x < 3 x[ind] y <- 1:10 y[y>3 & y < 7] z <- c( "a", "b", "c") z[c(TRUE, FALSE, TRUE)] ### Zastosowanie dane <- cumsum( rnorm(100)) t <- 1:length(dane) v <- mean( dane) ind <- dane < v plot( x = t, y = dane, type = "l", cex = 2, col = "black", pch = 20) points( t[ind], dane[ind], col = "red", pch = 20, cex = 4) points( t[!ind], dane[!ind], col = "blue", pch = 20, cex = 2)
Przykład indeksowania przez nazwę.
### Przyklad x <- 1:3 names( x) <- c("ala", "bela", "cela") x["ala"] x["cela"]
2 List
2.1 Tworzenie listy
Co to jest lista? Lista to lista pozycji z nazwami, która może przechowywać dowolne dane.
### Tworzenie dane <- list( "kraj" = "Polska", "populacja" = 38000000, "EU" = TRUE) dane ### Laczenie list dane1 <- c( dane, list( "NATO" = TRUE)) dane1 names( dane1)
2.2 Indeksowanie listy
Listy indeksujemy po nazwie, po pozycji przy pomocy operatorów []
, [[]]
.
### Tworzenie listy dane <- list( "kraj" = "Polska", "populacja" = 30000000, "eu" = TRUE, "nato" = TRUE ) ### Indeksowanie 1 dane$kraj dane$eu dane$nato ### Indeksowanie 2 dane[1] dane[4] ### Indeksowanie 3 dane[[1]] dane[[4]] ### Indeksowanie 4 dane[["kraj"]] dane[["nato"]]
3 Ramki danych
3.1 Tworzenie
Ramki danych tworzy się przy pomocy funkcji data.frame()
.
### Tworzenie dane <- data.frame( "lp" = 1:5, "value" = rnorm( 5) ) dane
3.2 Indeksowanie ramki danych
Ramki danych można indeksować tak jak wektory oraz tak jak listy oraz można te metody mieszać.
### Tworzenie dane <- data.frame( "lp" = 1:5, "value" = rnorm( 5) ) ### Przyklady indeksowania dane$value dane[,] dane[,"value"] dane[1:3,] ind <- dane$value< mean( dane$value) dane[ind, ] dane[ind, "value"] ind <- as.logical( dane$lp %% 2) typeof( ind) dane[ind,] dane[!ind,]