Статистическая обработка экспериментальных данных. Язык R в задачах планирования эксперимента. Учебное пособие
.pdf
При выходе из RGui, среда предложит сохранить рабочее пространство (рисунок 9).
Рисунок 9 – Сохранение рабочего пространства по выходу из Gui
Сохранение рабочего пространства и его последующая загрузка в новом сеансе работы с R (Файл/Загрузить рабочее пространство...) позволяют продолжить работу с того места, где она была прервана. При этом сохраняются значения всех переменных, вычисленные на прошлом сеансе работы.
11
2. Практическая часть
2.1.Основные операторы
Объявление переменных
В отличие от большинства языков программирования, в языке R отсутствует типизация переменных. Переменная может хранить в себе любое значение, функцию, или даже фрагмент кода.
Для передачи переменной значения в языке R применяется следующий оператор <- (меньше и минус).
Например
>A <- 1
>B <- “info”
>B <- A
Отображение и удаление объектов памяти
Функция ls() показывает объекты, находящиеся памяти, отображая только их названия.
При записи нескольких команд в одной строке, для того чтобы отделить одну команду от другой используется символ ";" (точка с запятой).
Например
> name <- "Имя"; n1 <- 1; n2 <- 100
>ls()
[1] "n1" "n2" "name"
12
Вывод значения переменной
Для того чтобы получить информацию о содержимом переменной, достаточно написать её название в окне ввода команд:
Например
> n1 [1] 1
Обратите внимание на значение в квадратных скобках перед числом 100. Это индекс, по которому расположено данное значение в массиве A. Условно говоря, в языке R нет понятия скалярных величин. Все переменные векторного типа, и начинают свою нумерацию с 1, а не с 0, как в большинство языков программирования.
Текущая папка
Для того чтобы загружать данные и сохранять результаты работы необходимо указать текущий рабочий каталог, в котором располагаются все исходные данные и результаты работы. Чтобы указать текущую папку необходимо в настройках среды выбрать пункт меню: Файл Изменить папку…
Проделать подобную операцию возможно и с использованием команд языка.
Например
>#Указать текущим каталогом D:\users\845M
>setwd(‘D:/users/845M’)
>#Получить имя текущего каталога
>getwd()
13
Комментарии
Для улучшения читаемости кода, допускается применение комментариев. Для того, чтобы информировать систему о том, что дальнейшее содержимое – комментарий, ставится символ #.
Например
> # Программа 1
>A<- 1 # Комментарий к строке 1
2.2.Данные в R
Объекты
R работает с объектами, которые имеют два встроенных атрибута: тип данных и длина. Тип данных – вид элемента; имеются четыре типа данных: num(числовой), char(символьный), complex(комплексный) и logical(логический). Длина - общее количество элементов объекта.
Таблица 1 – Возможные типы данных для R объектов
|
|
Возможные типы |
Использование в |
|
Объект |
|
объекте нескольких |
||
|
данных |
|||
|
|
типов данных |
||
|
|
|
||
|
|
|
|
|
vector |
числовой, |
символьный, |
Нет |
|
комплексный, логический |
||||
|
|
|||
|
|
|
||
factor |
числовой, символьный |
Нет |
||
|
|
|
|
|
array |
числовой, |
символьный, |
Нет |
|
комплексный, логический |
||||
|
|
|||
|
|
|
|
|
matrix |
числовой, |
символьный, |
Нет |
|
комплексный, логический |
||||
|
|
|||
|
|
|
|
|
14
data.frame |
числовой, |
символьный, |
Да |
|
|
комплексный, логичный |
|
||
|
|
|
|
|
Ts |
числовой, |
символьный, |
Да |
|
комплексный, логический |
||||
|
|
|||
|
|
|
|
|
|
числовой, |
символьный, |
|
|
List |
комплексный, |
логический, |
Да |
|
|
функция, выражение, формула |
|
||
|
|
|
|
|
vector (вектор) – обычная переменная. factor (фактор) – категорийная переменная. array (массив) – таблица с k измерениями
matrix (матрица) – частный случай массива с k = 2. У массива и матрицы все элементы одного и того же типа.
data.frame – таблица состоящая из нескольких векторов одинаковой длины, но возможно различных типов.
Ts – набор данных временного ряда, содержащий дополнительные атрибуты, такие как: частота и дата.
Несмотря на то, что язык слабо типизирован, в нём имеется возможность преобразовывать числовые значения к строковым и наоборот. Для того чтобы получить информацию о типе данных переменной достаточно воспользоваться функцией typeof.
Например
>A <- 1
>B <- “text”
>typeof(A) [1] “double” >typeof(B)
15
[1] “string”
Чтение данных из файла
Для того чтобы обрабатывать данные, необходимо их предварительно прочитать из файла, расположенного в текущем каталоге. Рассмотрим чтение данных из файла.
Например
>#Читаем по строкам файл data.txt
>readLines("data.txt") [1] "12" "13" "14"
>#Читаем по строкам файл из Интернета readLines("https://valera.ws/files/ya.weather/cities-cp1251.csv")
Данные, наиболее часто применяемые в статистической обработке, представлены в виде таблиц. Для более удобной работы с ними в языке R представлено несколько функций, упрощающих чтение подобного рода данных.
Обратите внимание на то, что к файлам, расположенным в текущем каталоге не обязательно указывать полный путь. Достаточно лишь указать их имя.
Наиболее распространённый формат хранения данных, представленных в виде таблиц это CSV – значения, разделённые спецсимволами. По умолчанию, символом разделителем считается; Однако бывают и запятые, и знаки табуляции.
Верхнюю строку принято считать названиями столбцов. Если она присутствует в файле, то во время вызова команды необходимо указать параметр header = TRUE. Если строка с названиями столбцов
16
отсутствует, то параметр header требуется установить в значение
FALSE.
Например
>#Читаем содержимое таблицы stu.csv
>#Все поля таблицы разделяются символом;
>read.csv2("stu.csv", header = TRUE)
Обратите внимание, что в данном случае значение параметра написано вместе с его именем. Язык R допускает изменять расположения аргументов функции, при этом только необходимо указать название данного параметра.
Например
>#Данныевариантывызоваэквивалентны
>read.csv2(file = "stu.csv", header = TRUE)
>read.csv2("stu.csv", TRUE)
>read.csv2(header = TRUE, file = "stu.csv")
>read.csv2("stu.csv")
>read.csv2(file = "stu.csv")
17
В том случае, если поля разделены другим символом, то необходимо указать ещё один параметр – sep. Он указывает на то, каким символом элементы строки будут дробиться на ячейки.
Например
> #Разделитель – точка с запятой
>read.csv2("stu.csv", sep= “;”)
2.3.Массивы
Операции с матрицами
Ключевым элементом статистической обработки являются данные. Наиболее часто эти данные представляются в наиболее удобном виде, в форме векторов, таблиц и матриц.
В языке R существует специальная функция c(), которая объединяет элементы в единый вектор.
Например
># Создать массив A из элементов 1, 2, …, 6
>A<- c(1,2,3,4,5,6)
># То же самое, но через диапазон
>A <- c(1:6)
Если требуется записать в переменную последовательность с учётом шага, то используется функция seq(). Если необходимо повторить несколько элементов подряд, то применяют функцию rep().
Например
># Создать массив B из элементов 1.0, 1.5, …, 3.0
>B <- seq(from = 1, to = 3, by = 0.5)
18
> # Создать массив C, содержащий 5 единиц подряд
>C<- rep(1, 5)
Индексирование элементов массива
Все элементы массива именуются, начиная с индекса 1. А сам индекс указывается в скобках. Рассмотрим несколько вариантов обращения к элементам одномерного массива (вектора) по их индексам.
Например
>#Получаем i-ый элемент массива В
>В[i]
>#Получаем вектор, в котором нет элемента
>#с индексом i
>B[-i]
>#Получаем вектор из n-первых элементов
>B[1:n]
>#Получаем вектор из всех элементов массива
>#кроме n-первых
>B[-(1:n)]
>#Получаем 1-ый и 3-ий элементы массива
>B[c(1,3)]
>#Выбираем только те элементы, которые > 5
>B[B > 3]
>#Выбираем элементы, входящие в диапазон (-1; 3]
19
x[x > -1 & x <=3]
Для работы с матрицами в языке предусмотрены следующие возможности.
Например
>#Получаем транспонированную матрицу M
>t(M)
>#Получаем главную диагональ матрицы M
>diag(M)
>#Перемножение матриц M и N
>M%*%N
>#Находит решение СЛАУ
>solve(A, B)
>#Обратная матрица
>solve(A)
>#Вычисление сумм элементов по каждой строке
>rowsum(M)
>#Вычисление средних значений по столбцам
>colMeans(M)
2.4.Математические операции
Язык R имеет множество различных функций, прежде всего статистического характера, позволяющих в одно действие рассчитать СКО, найти значение выражения и т.д.
20
