Калькулятор

```{r}
3 + 4
2 * 7
8 %% 3
```

Функции:

- сложение: `+`

- вычитание: `-`

- умножение: `*`

- деление: `-`

- возведение в степень: `^`

- остаток от деления: `%%`

Тут можно поэкспериментировать и с другими функциями:

```{r}

```

Базовое понятие — присваивание. 
Конструкция вида `name <- object`, где слева указывается название переменной, а справа — некоторый объект (например, число, строка или таблица), позволяет сохранить объект и обращаться к нему в дальнейшем по имени `name`.

Вместо стрелочки `<-` можно писать знак равно `=`, но стилевой гид всё же рекомендует первый вариант.

```{r}
a <- 15 # сохранили значение, не увидим результат в консоли
a # обращаемся к переменной, видим результат в консоли
```

Упражнение 1. Создайте свою целочисленную переменную `b` и выведите её значение в консоль.

```{r}


```

Значения переменных можно менять, в таком случае сохраняется последнее введённое:

```{r}
c <- 5
c

c <- 9
c
```

Для переменных также применимы арифметические операции, перечисленные в начале. Результаты этих операций тоже можно сохранять в отдельные переменные.

```{r}
# a + b # результат в консоли

# sum <- a + b
# sum
```

Упражнение 2. Перемножьте числа `a` и `b`, сохраните результат в переменную `prod`.

```{r}


```

Среди основных типов переменных можно выделить следующие:

- числа с точкой, например, `2.3` называются `numeric`

- целые числа, как `2`, — `integer`

- строки и текст — `character`, объекты этого типа пишут в кавычках

- логические переменные `FALSE` — `logical`

Создадим переменные всех типов:

```{r}
num <- 5.7
int <- 9
str <- 'go go go'
log <- TRUE
```

Чтобы проверить тип переменной, нужно использовать функцию `class()`.

```{r}
number <- 7.4
class(number)

string <- '7.4'
class(string)
```

Упражнение 3. Проверьте тип переменных `num`, `int`, `str`, `log`.

```{r}




```

Ещё один способ хранить данные — записывать их в одномерный массив, то есть вектор. Причём, в векторе могут быть числовые значения, строковые или логические.
Создать вектор можно с помощью функции `c()`.

```{r}
A_vector <- c(7, 1, 4, 0, 5, -3) # вектор из чисел
A_vector

str_vecotr <- c('aaa', 'bbb', 'ccc') # вектор из строк
str_vecotr

log_vector <- c(FALSE, TRUE, FALSE, FALSE) # ветор из логических переменных
log_vector
```

Упражнение 4. Создайте свой `B_vector` из шести чисел и выведите его в консоль.

```{r}


```

Все арифметические операции с векторами выполняются поэлементно.

```{r}
C_vector <- c(-3, 2, 5, 1, 2, 3)
total <- A_vector + C_vector
total
```

Упражнение 5. Создайте вектор `total_prod` как произведение векторов `A_vector` и `C_vector`.

```{r}


```

Чтобы получить скалярное произведение нужен оператор `%*%`.

```{r}
A_vector %*% C_vector
```

Чтобы обратиться к конкретному элементу вектора, нужно указать его номер в квадратных скобках после названия переменной. Аналогично можно посмотреть на несколько значений в векторе, написав после названия вектора конструкцию вида `[satrt:end]`. Тогда в консоли появятся элементы вектора с номера `start` по номер `end` включительно.

Элементы вектора можно изменять. Для этого надо обратиться к нужному элементу и присвоить ему новое значение.

```{r}
A_vector[2] # второй элемент вектора A_vector
A_vector[2] <- -7 # изменили значение второго элемента
A_vector

A_vector[2:4] # элементы вектора A_vector со второго по четвёртый
```

Упражнение 6. Замените пятый элемент вектора `C_vector` на любой другой. Выведите элементы вектора `C_vector` с третьего по шестой.

```{r}



```

У векторов можно посчитать среднее, медиану, сумму по элементам, максимальное и минимальное значения с помощью встроенных функция `mean()`, `median()`, `sum()`, `max()`, `min()`.

```{r}
mean(A_vector)
median(A_vector)
sum(A_vector)
# max(___)
# min(___)
```

Если нужен вектор из последовательных чисел, то его можно создать с помощью команды `seq`.
Её аргументы:

- `from` — начало последовательности

- `to` — конец последовательности

- `by` — шаг

- `len` — длина последовательности

```{r}
seq_vector1 <- seq(from = 1, to = 10, by = 1)
seq_vector1

seq_vector2 <- seq(from = 0, to = 1, len = 15)
seq_vector2
```

Упражнение 7. Создайте вектор значений от 20 до 40 с шагом 1.5.

```{r}

```

Если нужен вектор из повторяющихся чисел, то можно воспользоваться командой `rep` с аргументами

- `x` — число или вектор, который будет повторяться

- `times` — количество повторений объекта `x`

- `len` — длина вектора

- `each`— количество повторений каждого элемента `x`

```{r}
rep_vecotr1 <- rep(x = 2, len = 5)
rep_vecotr1

rep_vecotr2 <- rep(x = 1:3, times = 7)
rep_vecotr2


rep_vecotr3 <- rep(x = 1:3, times = 7)
rep_vecotr3

rep_vecotr4 <- rep(x = 1:4, times = 7, each = 2)
rep_vecotr4
```

Упражнение 8. Создайте вектор, в котором последовательность чисел 5, 6, 7, 8 повторяется 3 раза, и каждый элемент этой последовательности повторяется дважды.

```{r}

```

Элементы вектора можно отбирать с помощью операций сравнения:

- `<`

- `>`

- `<=`

- `>=`

- `==`

- `!=`

```{r}
c(10, 2, -7, 11) > 5 # элементы вектора большие, чем пять
c(4, 7, 7, 7, 3, -2, 7) != 7 # элементы вектора, которые не равны семи
```

Если сохранить полученный вектор из логических значений, то можно вывести те элементы вектора, которые соответсвуют условию.

```{r}
seq_vector1 # вектор из последовательных значений, созданный ранее
seq_vector1 > 5 # вектор из логических переменных
idx <- seq_vector1 > 5 # сохраним его в переменную idx
seq_vector1[idx] # выведем элементы вектора seq_vector1, которые больше пяти
```


Упражнение 9. Выведите значения вектора `rep_vector4` не меньше двух.

```{r}


```

