Очень часто (на самом деле, всегда) для работы с данными предустановленных библиотек – тех, которые были автоматически установлены вместе с 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. И сохранять файлы он тоже будет в эту папку.
Базовые операции:
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: 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
Что можно делать с текстовыми переменными? Например, в текстовых переменных можно заменять одни символы на другие. Для этого существует функция 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