Задания по первой лекции

task
Author

Elena U

Published

February 22, 2023

Составлены в формате задание - ответ к нему.

Рассчитано на самопроверку: ваша задача написать такой код, чтобы совпал с моим правильным ответом. Плюс есть еще несколько заданий на подумать и вспомнить материал лекции.

Если вдруг найдутся ошибки/опечатки, пишите на почту e.ubogoeva@alumni.nsu.ru или в телеграм. Вопросы по заданиям также можно писать на почту или в телеграм, телеграм чуть предпочтительнее.

Калькулятор

  • Разделите числа 2583, 5971, 2946, 5783 на 7
[1] 369
[1] 853
[1] 420.8571
[1] 826.1429
  • Посчитайте остаток от деления этих же чисел на 7.
[1] 0
[1] 0
[1] 6
[1] 1
  • А целую часть от деления (числа те же)?
    Подсказка: справку по арифметическим операторам можно вызвать, набрав например ?`+` в консоли или просто погуглить: оператор целочисленного деления R
[1] 369
[1] 853
[1] 420
[1] 826
  • Посчитайте квадратный корень из числа 289 двумя разными способами
[1] 17
[1] 17
  • Посчитайте логарифм по основанию 7 от числа 96889010407
[1] 13
  • Теперь натуральный логарифм от числа 10, результат умножить на 6
[1] 13.81551

Работа с векторами

  • Создайте вектор из чисел 5, 203, 11
[1]   5 203  11
  • Создайте вектор из чисел от 314 до 335
 [1] 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332
[20] 333 334 335
  • Создайте вектор чисел от 20 до 2. Подсказка: оператор : работает и для создания последовательностей с шагом -1/
 [1] 20 19 18 17 16 15 14 13 12 11 10  9  8  7  6  5  4  3  2
  • Создайте вектор чисел от 20 до 2 с шагом -2.
 [1] 20 18 16 14 12 10  8  6  4  2
  • Создайте вектор, состоящий из двадцати единиц

     [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
  • Создайте вектор 1 1 1 2 2 2 3 3 3. Подсказка: чтобы узнать как это можно сделать, посмотрите справку функции rep()

    [1] 1 1 1 2 2 2 3 3 3
  • А теперь вектор 1 1 2 2 3 3 1 1 2 2 3 3 1 1 2 2 3 3 (если что непонятно - смотрим справку и гуглим)

     [1] 1 1 2 2 3 3 1 1 2 2 3 3 1 1 2 2 3 3

Логические операторы

  • Проверьте на равенство: остаток от деления 257 на 6 и число 5
[1] TRUE
  • Проверьте на равенство число 2 и квадратный корень из 2 в квадрате.
    Ответ убил:

    [1] FALSE
    2 == sqrt(2) ^ 2

    Почему это произошло, можно почитать здесь. Такой прикол существует не только в R, а характерен для любого языка программирования, поскольку дробные числа в компьютере хранятся с ограниченной (хоть и достаточно большой) точностью. Для проверки на равенство такого рода можно использовать функцию all.equal().

    all.equal(2, sqrt(2) ^ 2)
    [1] TRUE
    Note

    Все дело в том, что числа в компьютере записываются в виде степеней двойки.

  • Сколько чисел, делящихся на 3 без остатка, в векторе чисел от 1 до 80?

    [1] 26

Индексация векторов

  • Создайте вектор x, состоящий из чисел с 2 до 20 с шагом 2. Извлеките 2, 5, 7 элемент
[1]  4 10 14
  • Создайте вектор x, состоящий из чисел с 2 до 20 с шагом 2. Извлеките каждый третий элемент.

    [1]  6 12 18
  • Индесация по условию. Извлеките все числа, кратные 9, в векторе чисел от 1 до 100.

     [1]  9 18 27 36 45 54 63 72 81 90 99
  • Извлеките все числа, больше или равные нулю в векторе -4 -2 0 2 4

    [1] 0 2 4

Приведение типов

  • Какой будет тип у вектора c(TRUE, 2, 'gene')? И почему?

  • Вспомните, в каком порядке должно идти приведение типов.

  • Какими функциями можно превратить вектор в нужный тип?

Пропущенные значения

  • Уберите пропущенные значения из вектора
    missed_values <- c(NA, 1:3, NA, 7, 10, NA, NA, NA, 8, 5, 7)

    [1]  1  2  3  7 10  8  5  7
  • Посчитайте среднее в этом векторе двумя разными способами

    [1] 5.375
    [1] 5.375
  • Почему при сравнении NA == NA получается NA?

  • Чем плохи пропущенные значения?