1 Лабораторная работа. Лабораторная работа 1. Начало работы в r 1 Начало работы в r разделите 9801 на 9 ## 1 1089
Скачать 31.65 Kb.
|
Лабораторная работа №1. Начало работы в R 1.1 Начало работы в R Разделите 9801 на 9 ## [1] 1089 Посчитайте логарифм от 2176782336 по основанию 6 ## [1] 12 Теперь натуральный логарифм 10 и умножьте его на 5 ## [1] 11.51293 С помощью функции sin() посчитайте sin(π),sin(π/2),sin(π/6). Значение ππ - зашитая в R константа (pi) ## [1] 1.224647e-16 ## [1] 1 ## [1] 0.5 1.2 Создание векторов Создайте вектор из значений 2, 30 и 4000 ## [1] 2 30 4000 Создайте вектор от 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 Функция sum() возвращает сумму элементов вектора на входе. Посчитайте сумму первых 100 натуральных чисел (т.е. всех целых чисел от 1 до 100) ## [1] 5050 Создайте вектор от 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 Создайте вектор значений 5, 4, 3, 2, 2, 3, 4, 5: ## [1] 5 4 3 2 2 3 4 5 Создайте вектор 2, 4, 6, … , 18, 20. ## [1] 2 4 6 8 10 12 14 16 18 20 Создайте вектор 0.1, 0.2, 0.3, …, 0.9, 1. ## [1] 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 2020 год – високосный. Следующий високосный год через 4 года – это будет 2024 год. Составьте календарь всех високосных годов XXI века, начиная с 2020 года 2100 год относится к XXI веку, а не к XXII ## [1] 2020 2024 2028 2032 2036 2040 2044 2048 2052 2056 2060 2064 2068 2072 2076 ## [16] 2080 2084 2088 2092 2096 2100 Создайте вектор, состоящий из 20 повторений “Хэй!” ## [1] "Хэй!" "Хэй!" "Хэй!" "Хэй!" "Хэй!" "Хэй!" "Хэй!" "Хэй!" "Хэй!" "Хэй!" ## [11] "Хэй!" "Хэй!" "Хэй!" "Хэй!" "Хэй!" "Хэй!" "Хэй!" "Хэй!" "Хэй!" "Хэй!" Как я и говорил, многие функции, работающие с одним значением на входе, так же прекрасно работают и с целыми векторами. Попробуйте посчитать квадратный корень чисел от 1 до 10 с помощью функции sqrt() и сохраните результат в векторе roots. Выведите содержание вектора roots в консоль ## [1] 1.000000 1.414214 1.732051 2.000000 2.236068 2.449490 2.645751 2.828427 ## [9] 3.000000 3.162278 *Создайте вектор из одной единицы, двух двоек, трех троек, …. , девяти девяток ## [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 1.3 Приведение типов Сделайте вектор vec1, в котором соедините 3, а также значения "Мой" и "вектор" ## [1] "3" "Мой" "вектор" Попробуйте вычесть TRUE из 10 ## [1] 9 Соедините значение 10 и TRUE в вектор vec2 ## [1] 10 1 Соедините вектор vec2 и значение "r": ## [1] "10" "1" "r" Соедините значения 10, TRUE, "r" в вектор ## [1] "10" "TRUE" "r" 1.4 Векторизация Создайте вектор 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: ## [1] Inf 5.000000 3.000000 2.333333 Возведите каждый элемент вектора p в степень соответствующего ему элемента вектора q: ## [1] 1 5 36 343 Умножьте каждое значение вектора p на 10. ## [1] 40 50 60 70 Создайте вектор квадратов чисел от 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 Создайте вектор 1, 0, 3, 0, 5, …, 17, 0, 19, 0. ## [1] 1 0 3 0 5 0 7 0 9 0 11 0 13 0 15 0 17 0 19 0 *Создайте вектор, в котором будут содержаться первые 20 степеней двойки. ## [1] 2 4 8 16 32 64 128 256 512 ## [10] 1024 2048 4096 8192 16384 32768 65536 131072 262144 ## [19] 524288 1048576 *Создайте вектор из чисел 1, 10, 100, 1000, 10000: ## [1] 1 10 100 1000 10000 *Посчитать сумму последовательности 11⋅2+12⋅3+13⋅4+…+150⋅5111⋅2+12⋅3+13⋅4+…+150⋅51. ## [1] 0.9803922 *Посчитать сумму последовательности 120+121+122+123+…1220120+121+122+123+…1220. ## [1] 1.999999 *Посчитать сумму последовательности 1+43+79+1027+1381+…+28196831+43+79+1027+1381+…+2819683. ## [1] 3.749174 *Сколько чисел из последовательности 1+43+79+1027+1381+…+28196831+43+79+1027+1381+…+2819683 больше чем 0.5? ## [1] 3 1.5 Индексирование векторов Создайте вектор troiki со значениями 3, 6, 9, …, 24, 27. ## [1] 3 6 9 12 15 18 21 24 27 Извлеките 2, 5 и 7 значения вектора troiki. ## [1] 6 15 21 Извлеките предпоследнее значение вектора troiki. ## [1] 24 Извлеките все значения вектора troiki кроме предпоследнего: ## [1] 3 6 9 12 15 18 21 27 Создайте вектор vec3, скопировав следующий код: vec3 <- c(3, 5, 2, 1, 8, 4, 9, 10, 3, 15, 1, 11) Найдите второй элемент вектора vec3. ## [1] 5 Верните второй и пятый элемент вектора vec3. ## [1] 5 8 Попробуйте извлечь сотое значение вектора vec3: ## [1] NA Верните все элементы вектора vec3 кроме второго элемента. ## [1] 3 2 1 8 4 9 10 3 15 1 11 Верните все элементы вектора vec3 кроме второго и пятого элемента. ## [1] 3 2 1 4 9 10 3 15 1 11 Найдите последний элемент вектора vec3. ## [1] 11 Верните все значения вектора vec3 кроме первого и последнего. ## [1] 5 2 1 8 4 9 10 3 15 1 Найдите все значения вектора vec3, которые больше 4. ## [1] 5 8 9 10 15 11 Найдите все значения вектора vec3, которые больше 4, но меньше 10. Если хотите сделать это в одну строчку, то вам помогут логические операторы! ## [1] 5 8 9 Найдите все значения вектора vec3, которые меньше 4 или больше 10. ## [1] 3 2 1 3 15 1 11 Возведите в квадрат каждое значение вектора vec3. ## [1] 9 25 4 1 64 16 81 100 9 225 1 121 *Возведите в квадрат каждое значение вектора на нечетной позиции и извлеките корень из каждого значения на четной позиции вектора vec3. Извлечение корня - это то же самое, что и возведение в степень 0.5. ## [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 Создайте вектор 2, 4, 6, … , 18, 20 как минимум 2 новыми способами. Знаю, это задание может показаться бессмысленным, но это очень базовая операция, с помощью которой можно, например, разделить данные на две части. Чем больше способов Вы знаете, тем лучше! ## [1] 2 4 6 8 10 12 14 16 18 20 1.6 Работа с пропущенными значениями Создайте вектор vec4 со значениями 300, 15, 8, 2, 0, 1, 110, скопировав следующий код: vec4 <- c(300, 15, 8, 20, 0, 1, 110) vec4 ## [1] 300 15 8 20 0 1 110 Замените все значения vec4, которые больше 20 на NA. Проверьте полученный вектор vec4: ## [1] NA 15 8 20 0 1 NA Посчитайте сумму vec4 с помощью функции sum(). Ответ NA не считается! ## [1] 44 1.7 Матрицы Создайте матрицу 4х4, состоящую из единиц. Назовите ее M1. ## [,1] [,2] [,3] [,4] ## [1,] 1 1 1 1 ## [2,] 1 1 1 1 ## [3,] 1 1 1 1 ## [4,] 1 1 1 1 Поменяйте все некрайние значения матрицы M1 (то есть значения на позициях [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 Выделите второй и третий столбик из матрицы M1. ## [,1] [,2] ## [1,] 1 1 ## [2,] 2 2 ## [3,] 2 2 ## [4,] 1 1 Сравните (==) вторую колонку и вторую строчку матрицы M1. ## [1] TRUE TRUE TRUE TRUE *Создайте таблицу умножения (9х9) в виде матрицы. Сохраните ее в переменную mult_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 *Из матрицы mult_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, если в этом месте в таблице умножения (mult_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 *Создайте матрицу mult_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 1.8 Списки Дан список list1: list1 = list(numbers = 1:5, letters = letters, logic = TRUE) list1 ## $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 Найдите первый элемент списка list1. Ответ должен быть списком длиной один. ## $numbers ## [1] 1 2 3 4 5 Теперь найдите содержание первого элемента списка list1 двумя разными способами. Ответ должен быть вектором. ## [1] 1 2 3 4 5 ## [1] 1 2 3 4 5 Теперь возьмите первый элемент содержания первого элемента списка list1. Ответ должен быть вектором. ## [1] 1 Создайте список list2, содержащий в себе два списка list1. Один из них будет иметь имя 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 *Извлеките первый элемент списка list2, из него – второй полэлемент, а из него – третье значение. ## [1] "c" СОДЕРЖАНИЕ ОТЧЕТА На титульном листе отчета должны быть указаны названия работы и дисциплины, фамилия студента и преподавателя, руководившего работой. По каждой лабораторной работе следует сформулировать цель, в конце отчета необходимо сделать вывод о том с чем вы ознакомились и какие навыки получили. В отчет нужно также поместить скриншоты запросов и полученных результатов |