Установка библиотек

Очень часто (на самом деле, всегда) для работы с данными предустановленных библиотек – тех, которые были автоматически установлены вместе с R – бывает недостаточно. Поэтому необходимые библиотеки нужно устанавливать самостоятельно. Для этого используется функция install.packages(). Для примера установим библиотеку foreign.

install.packages("foreign")

Важно: название библиотеки нужно всегда указывать в кавычках. Если ввести название без кавычек, R не найдет библиотеку и выдаст ошибку (Error in install.packages : объект 'foreign' не найден).

Иногда при установке библиотек можно столкнуться с проблемой: R пишет, что не может сохранить установочные файлы, так как нет доступа к нужной папке. Это обычно возникает в случае, если мы работаем в учетной записи, которая не является учетной записью администратора. Например, на компьютере есть пользователь Administrator (с неограниченными правами, в том числе по установке программ) и Student (с ограничениями). Решить проблему можно следующим образом: закрыть RStudio, щелкнуть по значку RStudio правой клавишей и выбрать «Запуск от имени администратора». После этого библиотеки должны устанавливаться нормально.

Для того чтобы использовать функционал установленной библиотеки, надо сначала к ней обратиться, иначе R не будет понимать, откуда брать запрашиваемые функции и писать «Ошибка: не могу найти функцию …». Сделать это можно так:

library(foreign)

Здесь уже можно вводить название библиотеки без кавычек.

Для тех, кто работает в Python: library() – аналог import.

Ориентирование на местности

Рано или поздно при работе в R у нас появится необходимость загружать или сохранять данные. Чтобы загрузить данные из какого-нибудь файла Excel, нам потребуется сообщить R, где этот файл находится, то есть прописать путь к файлу. Обычно путь выглядит достаточно громоздко, например, так: C:/User/Student/Документы/Мама-я-программист/данные.xls. Поэтому, скорее всего, мы захотим поступить проще – сообщить R, с какой папкой мы хотим работать, а затем просто указывать названия нужных файлов.

Папка, с которой работает R (откуда он запускается), называется рабочей. Узнать, какая папка является рабочей, можно так:

getwd()  # wd -- working directory
## [1] "/Users/allat/Downloads/R-programming-3-master/lectures/lect1-03-11"

Если мы хотим изменить рабочую папку, то поступаем так:

setwd("C:/path/to/my/new/folder")

Теперь R будет видеть, что файлы, которые мы собираемся открыть, лежат в указанной папке folder. И сохранять файлы он тоже будет в эту папку.

R как калькулятор

Базовые операции:

12 + 18 
## [1] 30
5 * 3
## [1] 15
2 ^ 3  # возведение в степень
## [1] 8
2 ** 3  # тоже возведение в степень
## [1] 8
sqrt(16)  # извлечение квадратного корня
## [1] 4
16 ^ (1/4)  # для корней степени больше 2
## [1] 2

Внимание: если вы планируете работать и в R, и в Python, удобнее запомнить возведение в степень через **, так как в Python символ ^ используется для сложения по модулю два (побитное сложение), которое не имеет никакого отношения к возведению в степень.

Округление:

round(4/3) # округление (до целой части)
## [1] 1
round(4/3, 2) # до второго знака после запятой
## [1] 1.33

Округление производится по правилам арифметики.

Математические константы и функции:

pi 
## [1] 3.141593
exp(1)  # константа e
## [1] 2.718282
exp(2)  # e^2
## [1] 7.389056
log(exp(1))  # log - натуральный логарифм
## [1] 1
log10(100)  # log10 - десятичный логарифм
## [1] 2
log(4, base = 2)  # можем указать основание логарифма (base)
## [1] 2

Кто забыл про логарифмы: см. здесь.

Переменные в R

Названия переменных в R могут содержать буквы, цифры, точки и знаки подчеркивания, при этом название переменной не может начинаться с цифры. Название переменной не должно совпадать со служебными словами (операторами) в R: if, else, for, while и другимим.

Оба оператора <- и = используются для присваивания, но <- является основным в R и используется чаще. А точнее, всегда :)

x <- 3
x
## [1] 3

Мы можем изменить значение переменной и сохранить ее под тем же именем:

x <- x + 3
x
## [1] 6

Типы переменных

Основными типами переменных в R являются:

Важно: В дробных числах в R в качестве разделителя используется точка.

Создадим переменную x1 и присвоим ей значение 9.5.

x1 <- 9.5
is.numeric(x1) # проверим, является ли числом
## [1] TRUE
is.integer(x1) # проверим, является ли целым числом
## [1] FALSE
is.character(x1) # проверим, является ли текстовой переменной
## [1] FALSE
is.logical(x1) # проверим, является ли логической переменной 
## [1] FALSE

Создадим переменную x2:

x2 <- "welcome"

Узнаем, какого она типа:

class(x2)
## [1] "character"

Для тех, кто работает в Python: можно считать примерным аналогом type().

Важно: Если забыли, что делает та или иная функция, можно спросить это у R:

?class # так

Или так:

help(class)

Тип переменной можно менять. Например, превратим строку “2” в число 2:

two <- "2"
as.numeric(two)
## [1] 2

Логические переменные легко превращаются в числовые:

u <- TRUE
e <- FALSE
as.numeric(u)
## [1] 1
as.numeric(e)
## [1] 0

Конечно, не у любой переменной мы можем поменять тип. Например, строку “abc” превратить в число не получится:

as.numeric("abc")

Числовые переменные

С числовыми переменными можно делать то же, что и с числами:

a <- 25
b <- 15
sum_ab <- a + b # складывать или вычитать
sum_ab
## [1] 40
prod_ab <- a * b # умножать или делить
prod_ab
## [1] 375
power_ab <- a ^ b # возводить в степень и так далее
power_ab
## [1] 9.313226e+20

e здесь - это число 10. Запись 9.313226e+20 (научная или компьютерная экспоненциальная запись числа) означает, что число \(9.313226\) надо умножить на \(10^{20}\). Если, напротив, R нужно было бы выдать очень маленькое число, 10 стояло бы в отрицательной степени:

2/23789
## [1] 8.407247e-05

Tекстовые переменные (строки)

Что можно делать с текстовыми переменными? Например, в текстовых переменных можно заменять одни символы на другие. Для этого существует функция sub().

group <- "group#1 group#2 group#3"
sub("#","-", group) # (что заменяем, на что заменяем, где заменяем)
## [1] "group-1 group#2 group#3"

Однако функция sub() позволяет изменить только первое совпадение. Для того, чтобы заменить все встречающиеся в тексте символы, нужно воспользоваться gsub():

gsub("#","-", group) # gsub - от global sub
## [1] "group-1 group-2 group-3"

Если необходимо заменить определенную букву в слове независимо от ее регистра (строчная или заглавная), это можно специфицировать с помощью параметра ignore.case:

order <- "CLOSE THE DOOR"
request <- tolower(order)  # перевести все буквы в строчные
order; request  # чтобы вывести две переменные сразу, можно указать их через ;
## [1] "CLOSE THE DOOR"
## [1] "close the door"

Логические выражения

Необходимы для проверки или формулировки условий.

x <- 2
y <- 10

Привычные выражения:

x > y
## [1] FALSE
x < y
## [1] TRUE
x <= y
## [1] TRUE
x == y # для проверки условия равенства - двойной знак =
## [1] FALSE

Обратите внимание, если мы запишем просто x = y, то условие равенства значений двух переменных мы не проверим, а вместо этого присвоим x значение y (т.е. перезапишем ее, что делать бы совсем не хотелось).

Менее привычные:

x != y # отрицание равенства
## [1] TRUE
x & y < 5 # и (одновременно x и y)
## [1] FALSE
x | y < 10 # или (хотя бы один из x и y)
## [1] TRUE

Символ & – аналог операции пересечения в математике, а | – объединения (не исключающее «или»).