19 Задания

19.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"   

19.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

19.3 Вектор. Индексирование

Создайте вектор vec1:

vec1 <- c(3, 5, 2, 1, 8, 4, 9, 10, 3, 15, 1, 11)
  • Найдите второй элемент вектора 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)

19.4 Списки

Дан список list_1:

list_1 = list(numbers = 1:5, letters = letters, logic = TRUE)
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"

19.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

19.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")
  • Сколько всего женских персонажей в книгах “Песни льда и пламени”?
[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