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,]

Date: [2017-10-26 Thu]

Author: Michal Ramsza

Created: 2017-11-20 Mon 17:30

Emacs 25.1.1 (Org mode 8.2.10)

Validate