20 Решения_заданий
20.1 Вектор
- Посчитайте логарифм от 8912162342 по основанию 6
[1] 12.7867
- Теперь натуральный логарифм 10 и умножьте его на 5
[1] 11.51293
- Создайте вектор от 1 до 20
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
- Создайте вектор от 20 до 1
[1] 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
- Создайте вектор от 1 до 20 и снова до 1. Число 20 должно присутствовать только один раз!
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 19 18 17 16 15
[26] 14 13 12 11 10 9 8 7 6 5 4 3 2 1
- Создайте вектор 2, 4, 6, … , 18, 20
[1] 2 4 6 8 10 12 14 16 18 20
- Создайте вектор из одной единицы, двух двоек, трех троек, …. , девяти девяток
[1] 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 6 6 6 6 6 6 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 9 9
[39] 9 9 9 9 9 9 9
- Сделайте вектор vec, в котором соедините
3
, а также значения"Мой"
и"вектор"
.
[1] "3" "Мой" "вектор"
- Вычесть
TRUE
из 10
[1] 9
- Соедините значение
10
иTRUE
в векторvec
[1] 10 1
- Соедините вектор
vec
и значение"r"
:
[1] "10" "1" "r"
- Соедините значения
10
,TRUE
,"r"
в вектор.
[1] "10" "TRUE" "r"
20.2 Вектор. Операции с векторами
Создайте вектор p
, состоящий из значений 4, 5, 6, 7, и вектор q
, состоящий из 0, 1, 2, 3.
[1] 4 5 6 7
[1] 0 1 2 3
Посчитайте поэлементную сумму векторов p
и q
:
[1] 4 6 8 10
Посчитайте поэлементную разницу p
и q
:
[1] 4 4 4 4
Поделите каждый элемент вектора p
на соответствующий ему элемент вектора q
:
О, да, Вам нужно делить на 0!
[1] Inf 5.000000 3.000000 2.333333
Возведите каждый элемент вектора p
в степень соответствующего ему элемента вектора q
:
[1] 1 5 36 343
Создайте вектор квадратов чисел от 1 до 10:
[1] 1 4 9 16 25 36 49 64 81 100
Создайте вектор 0, 2, 0, 4, … , 18, 0, 20
[1] 0 2 0 4 0 6 0 8 0 10 0 12 0 14 0 16 0 18 0 20
20.3 Вектор. Индексирование
Создайте вектор vec1
:
- Найдите второй элемент вектора
vec1
:
[1] 5
- Найдите последний элемент вектора
vec1
[1] 11
- Найдите все значения вектора
vec1
, которые больше 4
[1] 5 8 9 10 15 11
- Найдите все значения вектора vec1, которые больше 4, но меньше 10
[1] 5 8 9
- Возведите в квадрат каждое значение вектора
vec1
[1] 9 25 4 1 64 16 81 100 9 225 1 121
- Возведите в квадрат каждое нечетное значение вектора и извлеките корень каждого четного значения
vec1
[1] 9.000000 2.236068 4.000000 1.000000 64.000000 2.000000 81.000000
[8] 3.162278 9.000000 3.872983 1.000000 3.316625
- Создайте вектор
vec2
, в котором будут значения все значенияvec1
, которые меньше 10 будут заменены наNA
.
[1] NA NA NA NA NA NA NA 10 NA 15 NA 11
- Посчитайте сумму
vec2
с помощью функцииsum()
. ОтветNA
не считается!
[1] 36
- Создайте вектор 2, 4, 6, … , 18, 20 как минимум 2 новыми способами
Знаю, это задание может показаться бессмысленным, но это очень базовая операция, с помощью которой можно, например, разделить данные на две части. Чем больше способов Вы знаете, тем лучше!
integer(0)
20.4 Списки
Дан список list_1
:
$numbers
[1] 1 2 3 4 5
$letters
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
[20] "t" "u" "v" "w" "x" "y" "z"
$logic
[1] TRUE
- Найдите первый элемент списка. Ответ должен быть списком.
$numbers
[1] 1 2 3 4 5
- Теперь найдите содержание первого элемента списка двумя разными способами. Ответ должен быть вектором.
[1] 1 2 3 4 5
[1] 1 2 3 4 5
Теперь возьмите первый элемент содержания первого элемента списка. Ответ должен быть вектором.
[1] 1
Создайте список list_2
, содержащий в себе два списка list_1
с именами pupa
и lupa
.
$pupa
$pupa$numbers
[1] 1 2 3 4 5
$pupa$letters
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
[20] "t" "u" "v" "w" "x" "y" "z"
$pupa$logic
[1] TRUE
$lupa
$lupa$numbers
[1] 1 2 3 4 5
$lupa$letters
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
[20] "t" "u" "v" "w" "x" "y" "z"
$lupa$logic
[1] TRUE
Извлеките первый элемент списка, из него - второй полэлемент, а из него - третье значение
[1] "c"
20.5 Матрицы
- Создайте матрицу 4х4, состоящую из единиц. Назовите ее
M
[,1] [,2] [,3] [,4]
[1,] 1 1 1 1
[2,] 1 1 1 1
[3,] 1 1 1 1
[4,] 1 1 1 1
- Поменяйте все некрайние значения матрицы
M
(то есть значения на позициях [2,2], [2,3], [3,2] и [3,3]) на число 2.
[,1] [,2] [,3] [,4]
[1,] 1 1 1 1
[2,] 1 2 2 1
[3,] 1 2 2 1
[4,] 1 1 1 1
- Выделите второй и третий столбик из матрицы
M
[,1] [,2]
[1,] 1 1
[2,] 2 2
[3,] 2 2
[4,] 1 1
- Сравните (
==
) вторую колонку и вторую строчку матрицыM
[1] TRUE TRUE TRUE TRUE
- Создайте таблицу умножения (9х9) в виде матрицы. Сохраните ее в переменную
tab
:
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,] 1 2 3 4 5 6 7 8 9
[2,] 2 4 6 8 10 12 14 16 18
[3,] 3 6 9 12 15 18 21 24 27
[4,] 4 8 12 16 20 24 28 32 36
[5,] 5 10 15 20 25 30 35 40 45
[6,] 6 12 18 24 30 36 42 48 54
[7,] 7 14 21 28 35 42 49 56 63
[8,] 8 16 24 32 40 48 56 64 72
[9,] 9 18 27 36 45 54 63 72 81
- Из матрицы
tab
выделите подматрицу, включающую в себя только строчки с 6 по 8 и столбцы с 3 по 7.
[,1] [,2] [,3] [,4] [,5]
[1,] 18 24 30 36 42
[2,] 21 28 35 42 49
[3,] 24 32 40 48 56
- Создайте матрицу с логическими значениями, где
TRUE
, если в этом месте в таблице умножения (tab
) двузначное число иFALSE
, если однозначное.
Матрица - это почти вектор. К нему можно обращаться с единственным индексом.
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[2,] FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE
[3,] FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE
[4,] FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[5,] FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[6,] FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[7,] FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[8,] FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[9,] FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
- Создайте матрицу
tab2
, в которой все значенияtab
меньше 10 заменены на 0.
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,] 0 0 0 0 0 0 0 0 0
[2,] 0 0 0 0 10 12 14 16 18
[3,] 0 0 0 12 15 18 21 24 27
[4,] 0 0 12 16 20 24 28 32 36
[5,] 0 10 15 20 25 30 35 40 45
[6,] 0 12 18 24 30 36 42 48 54
[7,] 0 14 21 28 35 42 49 56 63
[8,] 0 16 24 32 40 48 56 64 72
[9,] 0 18 27 36 45 54 63 72 81
20.6 Датафрейм
- Кто является 274ым персонажем в
got
датафрейме? Из какого он дома?
- Найдите имена всех персонажей из дома (
Allegiances
)"Tyrell"
и"House Tyrell"
.
[1] "Alerie Hightower" "Alla Tyrell" "Alyn Ambrose"
[4] "Arryk (Guard)" "Arwyn Oakheart" "Bayard Norcross"
[7] "Blue Bard" "Butterbumps" "Elinor Tyrell"
[10] "Erryk (Guard)" "Garlan Tyrell" "Hobber Redwyne"
[13] "Horas Redwyne" "Janna Tyrell" "Kerwin"
[16] "Leo Tyrell" "Leonette Fossoway" "Loras Tyrell"
[19] "Mace Tyrell" "Margaery Tyrell" "Megga Tyrell"
[22] "Meredyth Crane" "Olenna Redwyne" "Paxter Redwyne"
[25] "Randyll Tarly" "Talbert Serry"
- Создайте новый датафрейм
greyjoy_women
, который будет включать в себя только женщин Грейджоев ("Greyjoy"
,"House Greyjoy"
)
greyjoy_women <- got[got$Allegiances %in% c("Greyjoy", "House Greyjoy") & got$Gender == 0, ]
greyjoy_women
- Сколько всего женских персонажей в книгах “Песни льда и пламени”?
[1] 157
- Сколько всего женских персонажей дворянского происхождения в книгах “Песни льда и пламени”?
[1] 84
- Поcчитатйе процентную (!) долю знати от общего числа персонажей (
Nobility
) вNight's Watch
.
[1] 9.482759
- Поcчитатйе процентную (!) долю знати от общего числа персонажей (
Nobility
) уLannister
.
[1] 71.60494
- Какая из книг цикла самая кровавая? Для ответа на этот вопрос подсчитайте таблицу частот для колонки
got$Book.of.Death
:
Это можно сделать с помощью функции
table()
, но в дальнейшем Вы узнаете и другие способы - подобная задача возникает достаточно часто.
1 2 3 4 5
49 73 97 27 61