ݺߣ

ݺߣShare a Scribd company logo
Тема 2
Сергей Мастицкий
БГУ, Минск, май 2014
2.1. Первые шаги
 R работает по принципу «вопрос-ответ»
 Команды вводятся после «знака подсказки» в
командной строке, напр.:
> plot(rnorm(1000))
1000 случайно
сгенерированных
нормально распределенных
значений
Author: Sergey Mastitsky
0 200 400 600 800 1000
-3-2-10123
Index
rnorm(1000)
> 2 + 2
[1] 4
> exp(-2)
[1] 0.1353353
> rnorm(10)
[1] -0.505 1.728 -0.323
[4] -1.900 1.808 -1.898
[7] -1.108 -1.215 1.092
[10] -0.759
Author: Sergey Mastitsky
> x <- 2
> x
[1] 2
> x + x
[1] 4
> y <- 5
> x * y
[1] 10
Author: Sergey Mastitsky
Можно использовать любые символы, но:
 имена не должны начитаться с точки “.” и
содержать пробелы
 имена не должны начинаться с цифр
 имена чувствительны к регистру: WT и wt –
для R это разные переменные
 Не следует использовать зарезервированные
служебные имена:
- c, q, t, C, D, F, I, T
- diff, df, pt, и некоторые др.
Author: Sergey Mastitsky
 Векторы в R – самостоятельные объекты:
> weight <- c(60, 72, 57, 90, 95, 72)
> weight
[1] 60 72 57 90 95 72
c(…) – функция «конкатенации» (concatenation)
 Можно выполнять вычисления над
векторами, как над обычными числами:
> height <- c(1.75, 1.80, 1.65, 1.90,
1.74, 1.91)
> bmi <- weight/height^2
> bmi
[1] 19.592 22.2222 20.937 24.931 31.378 19.736
Author: Sergey Mastitsky
 Расчет среднего веса:
> xbar <- sum(weight)/length(weight)
> xbar
[1] 74.333
 Расчет стандартного отклонения:
> SD <- sqrt(sum((weight - xbar)^2) /
(length(weight) - 1))
> SD
[1] 15.422
  )1/()( 2
nxxSD i
Author: Sergey Mastitsky
> mean(weight)
[1] 74.33333
> sd(weight)
[1] 15.42293
Author: Sergey Mastitsky
2.2. R как язык
программирования
 То, что мы вводим в командную строку, имеет
более общее название – выражение (expression)
 Выражения обычно включают имена
переменных, операторы и функции:
xbar <- sum(weight)/length(weight)
функция
имя переменной
оператор
Author: Sergey Mastitsky
 Выражения выполняют действия над
объектами
 Практически все, что мы создаем в R,
можно назвать “объектом”
x, weight, height, SD – все это объекты
R – объекто-ориентированный язык
Author: Sergey Mastitsky
 Объекты, содержащие данные (data
objects) – векторы, матрицы, списки и
таблицы данных
 Функции (function objects)
Author: Sergey Mastitsky
Функции
 Функция – имеющий имя набор команд,
которые выполняют определенные операции
над другими объектами:
plot(), c(), sum(), mean()...
 Фактичекие аргументы функций – объекты, к
которым применяется функция:
plot(height, weight)
 Формальные аргументы – параметры,
управляющие поведением функции:
plot(height, weight, pch = 2)
Author: Sergey Mastitsky
Скобки должны использоваться всегда,
даже если мы не указываем никаких
аргументов при вызове функции
Типичный пример: ls()
Author: Sergey Mastitsky
Векторы
Подробнее см.:
http://r-analytics.blogspot.de/2011/06/r_30.html
 Количественные (numeric)
> c(2, 7, 10)
[1] 2 7 10
 Символьные (character)
> c("Treatment 1", "Treatment 2")
[1] "Treatment 1" "Treatment 2"
 Логические: TRUE или FALSE
> b <- bmi > 25
> b
[1] FALSE FALSE FALSE FALSE TRUE FALSE
Author: Sergey Mastitsky
 Часто встречаются на практике
 В R обозначаются как NA:
> c(2, NA, 10)
[1] 2 NA 10
 Операции над NA возвращают NA, и поэтому
часто такие значения приходится исключать
из анализа:
> mean(c(2, NA, 10))
[1] NA
Author: Sergey Mastitsky
 Примеры конкатенации:
> c(42,57,12,39,1,3,4)
[1] 42 57 12 39 1 3 4
> x <- c(1, 2, 3)
> y <- c(10, 20)
> c(x, y)
[1] 42 57 12 39 1 3 4 10 20
> c("abc", 10, 20)
[1] "abc" "10" "20"
Author: Sergey Mastitsky
 Последовательность чисел (sequence):
> seq(from = 4, to = 10)
[1] 4 5 6 7 8 9 10
 Команда с тем же результатом:
> 4:10
 Последовательность с шагом 2:
> seq(from = 4, to = 10, by = 2)
[1] 4 6 8 10
Author: Sergey Mastitsky
 Повторяющийся (repeated) мотив:
> z <- c(2, 4, 6)
> rep(z, 2)
[1] 2 4 6 2 4 6
 Попробуйте также:
> rep(z, 1:3)
> rep(1:2, c(3, 6))
> rep(1:2, each = 10)
Author: Sergey Mastitsky
Матрицы
Подробнее см.:
http://r-analytics.blogspot.de/2011/07/r_10.html
 Матрица – 2D-вектор
 Широко используются в статистике
 Могут быть использованы для хранения
данных
Author: Sergey Mastitsky
 Пример использования matrix()
> h <- matrix(1:12, nrow=3,byrow=TRUE)
> h
 Присваивание имен строкам и столбцам
матрицы:
> rownames(h) <- c("A", "B", "C")
> colnames(h) <- c("V1", "V2", "V3", "V4")
> h
 Транспозиция (transposition) матрицы:
> t(h)
Author: Sergey Mastitsky
 “Связывание” (binding) векторов по
столбцам (columns):
> cbind(A = 1:4, B = 5:8, C = 9:12)
 “Связывание” (binding) векторов по строкам
(rows):
> rbind(A = 1:4, B = 5:8, C = 9:12)
Author: Sergey Mastitsky
Факторы
Подробнее см.:
http://r-analytics.blogspot.de/2011/07/r_17.html
 Фактор – качественная переменная,
содержащая метки для групп данных
(например, пол, место отбора проб,
экспериментальная группа и т.д.)
 Уровни фактора – конкретные
категории такой переменной (например,
“самец” и “самка”)
Author: Sergey Mastitsky
> sex <- c("male", "male",
"female", "female", "female")
> sex <- factor(sex)
> sex
[1] male male female female female
Levels: female male
> levels(sex)
[1] "female" "male"
> as.numeric(sex)
[1] 2 2 1 1 1
Author: Sergey Mastitsky
Этот способ тоже сработает, но лучше
его не использовать:
> sex <- c(0, 0, 1, 1, 1)
> sex <- factor(sex)
> sex
[1] 0 0 1 1 1
Levels: 0 1
Author: Sergey Mastitsky
Списки
Подробнее см.:
http://r-analytics.blogspot.de/2011/07/r_13.html
 Список (list) – набор R-объектов любого
типа
> sex <- c("male", "male",
"female")
> weight <- c(80, 85, 60)
> height <- c(1.75, 1.80, 1.68)
> data <- list(Sex = sex,
Weight = weight,
Height = height)
Author: Sergey Mastitsky
> data
$Sex
[1] "male" "male" "female"
$Weight
[1] 80 85 60
$Height
[1] 1.75 1.80 1.68
Author: Sergey Mastitsky
> data$Sex
[1] "male" "male" "female“
> data$Weight
[1] 80 85 60
и т.д. …
Author: Sergey Mastitsky
Таблицы данных
Подробнее см.:
http://r-analytics.blogspot.de/2011/07/r_22.html
 Таблица данных – список векторов
и/или факторов одинаковой длины,
упорядоченных в виде таблицы.
Каждый ряд в такой таблице
соответствует одному наблюдению. У
рядов также могут быть имена.
Author: Sergey Mastitsky
> data <- data.frame(
Sex = sex,
Weight = weight,
Height = height)
> data
Sex Weight Height
1 male 80 1.75
2 male 85 1.80
3 female 60 1.68
Author: Sergey Mastitsky
> names(data)
[1] "Sex" "Weight" "Height“
> data$Sex
[1] male male female
Levels: female male
> data$Height
[1] 1.75 1.80 1.68
Author: Sergey Mastitsky
Индексирование
 Извлечение определенных значений:
> weight[2]
[1] 85
> height[c(1, 3)]
[1] 1.75 1.68
> i <- c(2, 3)
> weight[i]
[1] 85 60
> height[-i]
[1] 1.75
Author: Sergey Mastitsky
 Условный выбор:
> height[height < 1.80]
[1] 1.75 1.68
> weight[weight>=80 & weight<=85]
[1] 80 85
Другие логические операторы:
| (логическое “или”)
! (логическое “не”)
Author: Sergey Mastitsky
 Значения из 2-го ряда 3-го столбца:
> data[2, 3]
[1] 1.8
 Весь 2-й ряд:
> data[2, ]
Sex Weight Height
2 male 85 1.8
 Весь 3-й столбец:
> data[, 3]
[1] 1.75 1.80 1.68
Author: Sergey Mastitsky
 Все данные для самцов:
> data[data$Sex == "male", ]
Sex Weight Height
1 male 80 1.75
2 male 85 1.80
> data$Sex == "male"
[1] TRUE TRUE FALSE
Author: Sergey Mastitsky
 Данные из 1-го и 3-го столбцов:
> data[, c(1, 3)]
Sex Height
1 male 1.75
2 male 1.80
3 female 1.68
Author: Sergey Mastitsky
 Полезные команды для больших таблиц:
> head(data, n = 2)
Sex Weight Height
1 male 80 1.75
2 male 85 1.80
> tail(data, n = 2)
...
Author: Sergey Mastitsky
2.3. Среда R
Рабочее пространство
 Рабочее пространство – часть памяти
компьютера, где хранятся все объекты,
созданные в ходе конкретной R-сессии
(временно, пока не будут сохранены!)
 Проверка содержимого рабочего
пространства:
> ls()
...
В RStudio имеется закладка “Environment”
Author: Sergey Mastitsky
 Периодически стоит проводить «уборку»:
> rm(i)
 Для удаления всех объектов (осторожно!):
> rm(list = ls())
В RStudio:
закладка “Environment”, кнопка “Clear All”
Author: Sergey Mastitsky
 Сохранение текущего рабочего
пространства (создает файл .Rdata в
текущей рабочей директории):
> save.image()
 В RStudio:
- Закладка “Environment”
- Кнопка “Save Workspace As…”
Author: Sergey Mastitsky
 Рабочая директория – папка, из которой R по
умолчанию пытается загружать файлы (и
сохранять в нее)
 Проверка пути к текущей рабочей папке:
> getwd()
[1] "D:/DOCS"
 Создание новой рабочей директории:
> setwd("D:/DOCS/Analysis")
В RStudio:
Session/Set Working Directory/Choose Directory
Author: Sergey Mastitsky
Скрипты
 Для выполнения нескольких
однотипных/специализированных команд
стоит сохранить их в виде скрипта
 Опция 1: функция source() – загружает
файл со скриптом и выполняет его
 Опция 2: редактор скриптов в RStudio –
позволяет выполнять несколько команд
одновременно
Author: Sergey Mastitsky
Author: Sergey Mastitsky
Получение помощи
 Имеется обширная встроенная справочная
система:
> help.start()
или закладка Help в RStudio
 Справка по конкретной функции:
> help(plot) # или просто
> ?plot
 Справка по определенной теме:
> help.search("correlation")
 Справка по определенному пакету:
> help(package = "name")
Author: Sergey Mastitsky
Расширения (пакеты)
 Пакет – коллекция функций, созданных для
выполнения определенного класса задач, или
колекция таблиц с данными (см. закладку
Packages в RStudio)
 Для загрузки (уже установленного) пакета:
> library(package)
 Инсталляция нового пакета (требуется Интернет-
соединение):
> install.packages("имя_пакета")
Author: Sergey Mastitsky
> install.packages("ISwR")
> install.packages("HSAUR2")
Author: Sergey Mastitsky
Author: Sergey Mastitsky
Author: Sergey Mastitsky
 Зайдите на страницу CRAN Task Views
и исследуйте ее содержимое
 Зайдите на сайт Inside-R и исследуйте
список пакетов
Author: Sergey Mastitsky

More Related Content

Основы языка R

  • 3.  R работает по принципу «вопрос-ответ»  Команды вводятся после «знака подсказки» в командной строке, напр.: > plot(rnorm(1000)) 1000 случайно сгенерированных нормально распределенных значений Author: Sergey Mastitsky 0 200 400 600 800 1000 -3-2-10123 Index rnorm(1000)
  • 4. > 2 + 2 [1] 4 > exp(-2) [1] 0.1353353 > rnorm(10) [1] -0.505 1.728 -0.323 [4] -1.900 1.808 -1.898 [7] -1.108 -1.215 1.092 [10] -0.759 Author: Sergey Mastitsky
  • 5. > x <- 2 > x [1] 2 > x + x [1] 4 > y <- 5 > x * y [1] 10 Author: Sergey Mastitsky
  • 6. Можно использовать любые символы, но:  имена не должны начитаться с точки “.” и содержать пробелы  имена не должны начинаться с цифр  имена чувствительны к регистру: WT и wt – для R это разные переменные  Не следует использовать зарезервированные служебные имена: - c, q, t, C, D, F, I, T - diff, df, pt, и некоторые др. Author: Sergey Mastitsky
  • 7.  Векторы в R – самостоятельные объекты: > weight <- c(60, 72, 57, 90, 95, 72) > weight [1] 60 72 57 90 95 72 c(…) – функция «конкатенации» (concatenation)  Можно выполнять вычисления над векторами, как над обычными числами: > height <- c(1.75, 1.80, 1.65, 1.90, 1.74, 1.91) > bmi <- weight/height^2 > bmi [1] 19.592 22.2222 20.937 24.931 31.378 19.736 Author: Sergey Mastitsky
  • 8.  Расчет среднего веса: > xbar <- sum(weight)/length(weight) > xbar [1] 74.333  Расчет стандартного отклонения: > SD <- sqrt(sum((weight - xbar)^2) / (length(weight) - 1)) > SD [1] 15.422   )1/()( 2 nxxSD i Author: Sergey Mastitsky
  • 9. > mean(weight) [1] 74.33333 > sd(weight) [1] 15.42293 Author: Sergey Mastitsky
  • 10. 2.2. R как язык программирования
  • 11.  То, что мы вводим в командную строку, имеет более общее название – выражение (expression)  Выражения обычно включают имена переменных, операторы и функции: xbar <- sum(weight)/length(weight) функция имя переменной оператор Author: Sergey Mastitsky
  • 12.  Выражения выполняют действия над объектами  Практически все, что мы создаем в R, можно назвать “объектом” x, weight, height, SD – все это объекты R – объекто-ориентированный язык Author: Sergey Mastitsky
  • 13.  Объекты, содержащие данные (data objects) – векторы, матрицы, списки и таблицы данных  Функции (function objects) Author: Sergey Mastitsky
  • 15.  Функция – имеющий имя набор команд, которые выполняют определенные операции над другими объектами: plot(), c(), sum(), mean()...  Фактичекие аргументы функций – объекты, к которым применяется функция: plot(height, weight)  Формальные аргументы – параметры, управляющие поведением функции: plot(height, weight, pch = 2) Author: Sergey Mastitsky
  • 16. Скобки должны использоваться всегда, даже если мы не указываем никаких аргументов при вызове функции Типичный пример: ls() Author: Sergey Mastitsky
  • 18.  Количественные (numeric) > c(2, 7, 10) [1] 2 7 10  Символьные (character) > c("Treatment 1", "Treatment 2") [1] "Treatment 1" "Treatment 2"  Логические: TRUE или FALSE > b <- bmi > 25 > b [1] FALSE FALSE FALSE FALSE TRUE FALSE Author: Sergey Mastitsky
  • 19.  Часто встречаются на практике  В R обозначаются как NA: > c(2, NA, 10) [1] 2 NA 10  Операции над NA возвращают NA, и поэтому часто такие значения приходится исключать из анализа: > mean(c(2, NA, 10)) [1] NA Author: Sergey Mastitsky
  • 20.  Примеры конкатенации: > c(42,57,12,39,1,3,4) [1] 42 57 12 39 1 3 4 > x <- c(1, 2, 3) > y <- c(10, 20) > c(x, y) [1] 42 57 12 39 1 3 4 10 20 > c("abc", 10, 20) [1] "abc" "10" "20" Author: Sergey Mastitsky
  • 21.  Последовательность чисел (sequence): > seq(from = 4, to = 10) [1] 4 5 6 7 8 9 10  Команда с тем же результатом: > 4:10  Последовательность с шагом 2: > seq(from = 4, to = 10, by = 2) [1] 4 6 8 10 Author: Sergey Mastitsky
  • 22.  Повторяющийся (repeated) мотив: > z <- c(2, 4, 6) > rep(z, 2) [1] 2 4 6 2 4 6  Попробуйте также: > rep(z, 1:3) > rep(1:2, c(3, 6)) > rep(1:2, each = 10) Author: Sergey Mastitsky
  • 24.  Матрица – 2D-вектор  Широко используются в статистике  Могут быть использованы для хранения данных Author: Sergey Mastitsky
  • 25.  Пример использования matrix() > h <- matrix(1:12, nrow=3,byrow=TRUE) > h  Присваивание имен строкам и столбцам матрицы: > rownames(h) <- c("A", "B", "C") > colnames(h) <- c("V1", "V2", "V3", "V4") > h  Транспозиция (transposition) матрицы: > t(h) Author: Sergey Mastitsky
  • 26.  “Связывание” (binding) векторов по столбцам (columns): > cbind(A = 1:4, B = 5:8, C = 9:12)  “Связывание” (binding) векторов по строкам (rows): > rbind(A = 1:4, B = 5:8, C = 9:12) Author: Sergey Mastitsky
  • 28.  Фактор – качественная переменная, содержащая метки для групп данных (например, пол, место отбора проб, экспериментальная группа и т.д.)  Уровни фактора – конкретные категории такой переменной (например, “самец” и “самка”) Author: Sergey Mastitsky
  • 29. > sex <- c("male", "male", "female", "female", "female") > sex <- factor(sex) > sex [1] male male female female female Levels: female male > levels(sex) [1] "female" "male" > as.numeric(sex) [1] 2 2 1 1 1 Author: Sergey Mastitsky
  • 30. Этот способ тоже сработает, но лучше его не использовать: > sex <- c(0, 0, 1, 1, 1) > sex <- factor(sex) > sex [1] 0 0 1 1 1 Levels: 0 1 Author: Sergey Mastitsky
  • 32.  Список (list) – набор R-объектов любого типа > sex <- c("male", "male", "female") > weight <- c(80, 85, 60) > height <- c(1.75, 1.80, 1.68) > data <- list(Sex = sex, Weight = weight, Height = height) Author: Sergey Mastitsky
  • 33. > data $Sex [1] "male" "male" "female" $Weight [1] 80 85 60 $Height [1] 1.75 1.80 1.68 Author: Sergey Mastitsky
  • 34. > data$Sex [1] "male" "male" "female“ > data$Weight [1] 80 85 60 и т.д. … Author: Sergey Mastitsky
  • 36.  Таблица данных – список векторов и/или факторов одинаковой длины, упорядоченных в виде таблицы. Каждый ряд в такой таблице соответствует одному наблюдению. У рядов также могут быть имена. Author: Sergey Mastitsky
  • 37. > data <- data.frame( Sex = sex, Weight = weight, Height = height) > data Sex Weight Height 1 male 80 1.75 2 male 85 1.80 3 female 60 1.68 Author: Sergey Mastitsky
  • 38. > names(data) [1] "Sex" "Weight" "Height“ > data$Sex [1] male male female Levels: female male > data$Height [1] 1.75 1.80 1.68 Author: Sergey Mastitsky
  • 40.  Извлечение определенных значений: > weight[2] [1] 85 > height[c(1, 3)] [1] 1.75 1.68 > i <- c(2, 3) > weight[i] [1] 85 60 > height[-i] [1] 1.75 Author: Sergey Mastitsky
  • 41.  Условный выбор: > height[height < 1.80] [1] 1.75 1.68 > weight[weight>=80 & weight<=85] [1] 80 85 Другие логические операторы: | (логическое “или”) ! (логическое “не”) Author: Sergey Mastitsky
  • 42.  Значения из 2-го ряда 3-го столбца: > data[2, 3] [1] 1.8  Весь 2-й ряд: > data[2, ] Sex Weight Height 2 male 85 1.8  Весь 3-й столбец: > data[, 3] [1] 1.75 1.80 1.68 Author: Sergey Mastitsky
  • 43.  Все данные для самцов: > data[data$Sex == "male", ] Sex Weight Height 1 male 80 1.75 2 male 85 1.80 > data$Sex == "male" [1] TRUE TRUE FALSE Author: Sergey Mastitsky
  • 44.  Данные из 1-го и 3-го столбцов: > data[, c(1, 3)] Sex Height 1 male 1.75 2 male 1.80 3 female 1.68 Author: Sergey Mastitsky
  • 45.  Полезные команды для больших таблиц: > head(data, n = 2) Sex Weight Height 1 male 80 1.75 2 male 85 1.80 > tail(data, n = 2) ... Author: Sergey Mastitsky
  • 48.  Рабочее пространство – часть памяти компьютера, где хранятся все объекты, созданные в ходе конкретной R-сессии (временно, пока не будут сохранены!)  Проверка содержимого рабочего пространства: > ls() ... В RStudio имеется закладка “Environment” Author: Sergey Mastitsky
  • 49.  Периодически стоит проводить «уборку»: > rm(i)  Для удаления всех объектов (осторожно!): > rm(list = ls()) В RStudio: закладка “Environment”, кнопка “Clear All” Author: Sergey Mastitsky
  • 50.  Сохранение текущего рабочего пространства (создает файл .Rdata в текущей рабочей директории): > save.image()  В RStudio: - Закладка “Environment” - Кнопка “Save Workspace As…” Author: Sergey Mastitsky
  • 51.  Рабочая директория – папка, из которой R по умолчанию пытается загружать файлы (и сохранять в нее)  Проверка пути к текущей рабочей папке: > getwd() [1] "D:/DOCS"  Создание новой рабочей директории: > setwd("D:/DOCS/Analysis") В RStudio: Session/Set Working Directory/Choose Directory Author: Sergey Mastitsky
  • 53.  Для выполнения нескольких однотипных/специализированных команд стоит сохранить их в виде скрипта  Опция 1: функция source() – загружает файл со скриптом и выполняет его  Опция 2: редактор скриптов в RStudio – позволяет выполнять несколько команд одновременно Author: Sergey Mastitsky
  • 56.  Имеется обширная встроенная справочная система: > help.start() или закладка Help в RStudio  Справка по конкретной функции: > help(plot) # или просто > ?plot  Справка по определенной теме: > help.search("correlation")  Справка по определенному пакету: > help(package = "name") Author: Sergey Mastitsky
  • 58.  Пакет – коллекция функций, созданных для выполнения определенного класса задач, или колекция таблиц с данными (см. закладку Packages в RStudio)  Для загрузки (уже установленного) пакета: > library(package)  Инсталляция нового пакета (требуется Интернет- соединение): > install.packages("имя_пакета") Author: Sergey Mastitsky
  • 62.  Зайдите на страницу CRAN Task Views и исследуйте ее содержимое  Зайдите на сайт Inside-R и исследуйте список пакетов Author: Sergey Mastitsky