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

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

install.packages("lmtest")

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

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

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

library(lmtest)

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

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

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

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

getwd() # wd -- working directory
## [1] "/home/oem/Рабочий стол/rprogramming-4/R-programming-4/lectures/lect1-13-09"

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

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

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

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

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

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

Округление:

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

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

pi 
## [1] 3.141593
exp(1) # константа e
## [1] 2.718282
exp(2) # e^2
## [1] 7.389056
sin(pi/2)
## [1] 1
cos(pi/4)
## [1] 0.7071068
tan(pi/4) 
## [1] 1
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"

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

?class # так

Или так:

help(class)

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

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

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().

s1 <- "respondent#1"
sub("#","_", s1) # (что заменяем, на что заменяем, где заменяем)
## [1] "respondent_1"

Однако функция sub() позволяет изменить только первое совпадение:

s <- "respondent#1, respondent#2, respondent#3"
sub("#","_", s)
## [1] "respondent_1, respondent#2, respondent#3"

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

gsub("#","_", s)
## [1] "respondent_1, respondent_2, respondent_3"

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

text <- "Duggedt"
text <- gsub("d", "s", text, ignore.case = TRUE) # игнорируем регистр
text
## [1] "suggest"

Регистр букв в тексте тоже всегда можно поменять:

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

И наоборот:

toupper(request) # перевести все буквы в заглавные
## [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 # отрицание равенства
## [1] TRUE
x & y < 5 # и (одновременно x и y)
## [1] FALSE
x | y < 10 # или (хотя бы один из x и y)
## [1] TRUE