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

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

install.packages("foreign")

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

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

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

library(foreign)

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

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

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

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

getwd() # wd -- working directory
## [1] "/home/oem/Рабочий стол/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
sqrt(16) # извлечение квадратного корня
## [1] 4
16 ^ (1/4) # для корней степени больше 2
## [1] 2

Округление:

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"

Важно: Если забыли, что делает та или иная функция, можно спросить это у 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"

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

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

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