Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Тема 2
Сергей Мастицкий
БГУ, Минск, май 2014
2.1. Первые шаги
 R работает по принципу «вопрос-ответ»
 Команды вводятся после «знака подсказки» в
командной строке, напр.:
> plot(rnorm...
> 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
...
> x <- 2
> x
[1] 2
> x + x
[1] 4
> y <- 5
> x * y
[1] 10
Author: Sergey Mastitsky
Можно использовать любые символы, но:
 имена не должны начитаться с точки “.” и
содержать пробелы
 имена не должны начин...
 Векторы в R – самостоятельные объекты:
> weight <- c(60, 72, 57, 90, 95, 72)
> weight
[1] 60 72 57 90 95 72
c(…) – функц...
 Расчет среднего веса:
> xbar <- sum(weight)/length(weight)
> xbar
[1] 74.333
 Расчет стандартного отклонения:
> SD <- s...
> mean(weight)
[1] 74.33333
> sd(weight)
[1] 15.42293
Author: Sergey Mastitsky
2.2. R как язык
программирования
 То, что мы вводим в командную строку, имеет
более общее название – выражение (expression)
 Выражения обычно включают им...
 Выражения выполняют действия над
объектами
 Практически все, что мы создаем в R,
можно назвать “объектом”
x, weight, he...
 Объекты, содержащие данные (data
objects) – векторы, матрицы, списки и
таблицы данных
 Функции (function objects)
Autho...
Функции
 Функция – имеющий имя набор команд,
которые выполняют определенные операции
над другими объектами:
plot(), c(), sum(), m...
Скобки должны использоваться всегда,
даже если мы не указываем никаких
аргументов при вызове функции
Типичный пример: ls()...
Векторы
Подробнее см.:
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] "Treatm...
 Часто встречаются на практике
 В R обозначаются как NA:
> c(2, NA, 10)
[1] 2 NA 10
 Операции над NA возвращают NA, и п...
 Примеры конкатенации:
> 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 5...
 Последовательность чисел (sequence):
> seq(from = 4, to = 10)
[1] 4 5 6 7 8 9 10
 Команда с тем же результатом:
> 4:10
...
 Повторяющийся (repeated) мотив:
> z <- c(2, 4, 6)
> rep(z, 2)
[1] 2 4 6 2 4 6
 Попробуйте также:
> rep(z, 1:3)
> rep(1:...
Матрицы
Подробнее см.:
http://r-analytics.blogspot.de/2011/07/r_10.html
 Матрица – 2D-вектор
 Широко используются в статистике
 Могут быть использованы для хранения
данных
Author: Sergey Mast...
 Пример использования matrix()
> h <- matrix(1:12, nrow=3,byrow=TRUE)
> h
 Присваивание имен строкам и столбцам
матрицы:...
 “Связывание” (binding) векторов по
столбцам (columns):
> cbind(A = 1:4, B = 5:8, C = 9:12)
 “Связывание” (binding) вект...
Факторы
Подробнее см.:
http://r-analytics.blogspot.de/2011/07/r_17.html
 Фактор – качественная переменная,
содержащая метки для групп данных
(например, пол, место отбора проб,
экспериментальная...
> sex <- c("male", "male",
"female", "female", "female")
> sex <- factor(sex)
> sex
[1] male male female female female
Lev...
Этот способ тоже сработает, но лучше
его не использовать:
> sex <- c(0, 0, 1, 1, 1)
> sex <- factor(sex)
> sex
[1] 0 0 1 1...
Списки
Подробнее см.:
http://r-analytics.blogspot.de/2011/07/r_13.html
 Список (list) – набор R-объектов любого
типа
> sex <- c("male", "male",
"female")
> weight <- c(80, 85, 60)
> height <- ...
> 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
 Таблица данных – список векторов
и/или факторов одинаковой длины,
упорядоченных в виде таблицы.
Каждый ряд в такой табли...
> data <- data.frame(
Sex = sex,
Weight = weight,
Height = height)
> data
Sex Weight Height
1 male 80 1.75
2 male 85 1.80
...
> names(data)
[1] "Sex" "Weight" "Height“
> data$Sex
[1] male male female
Levels: female male
> data$Height
[1] 1.75 1.80 ...
Индексирование
 Извлечение определенных значений:
> weight[2]
[1] 85
> height[c(1, 3)]
[1] 1.75 1.68
> i <- c(2, 3)
> weight[i]
[1] 85 6...
 Условный выбор:
> height[height < 1.80]
[1] 1.75 1.68
> weight[weight>=80 & weight<=85]
[1] 80 85
Другие логические опер...
 Значения из 2-го ряда 3-го столбца:
> data[2, 3]
[1] 1.8
 Весь 2-й ряд:
> data[2, ]
Sex Weight Height
2 male 85 1.8
 В...
 Все данные для самцов:
> data[data$Sex == "male", ]
Sex Weight Height
1 male 80 1.75
2 male 85 1.80
> data$Sex == "male"...
 Данные из 1-го и 3-го столбцов:
> data[, c(1, 3)]
Sex Height
1 male 1.75
2 male 1.80
3 female 1.68
Author: Sergey Mastit...
 Полезные команды для больших таблиц:
> head(data, n = 2)
Sex Weight Height
1 male 80 1.75
2 male 85 1.80
> tail(data, n ...
2.3. Среда R
Рабочее пространство
 Рабочее пространство – часть памяти
компьютера, где хранятся все объекты,
созданные в ходе конкретной R-сессии
(временно...
 Периодически стоит проводить «уборку»:
> rm(i)
 Для удаления всех объектов (осторожно!):
> rm(list = ls())
В RStudio:
з...
 Сохранение текущего рабочего
пространства (создает файл .Rdata в
текущей рабочей директории):
> save.image()
 В RStudio...
 Рабочая директория – папка, из которой R по
умолчанию пытается загружать файлы (и
сохранять в нее)
 Проверка пути к тек...
Скрипты
 Для выполнения нескольких
однотипных/специализированных команд
стоит сохранить их в виде скрипта
 Опция 1: функция sour...
Author: Sergey Mastitsky
Получение помощи
 Имеется обширная встроенная справочная
система:
> help.start()
или закладка Help в RStudio
 Справка по конкретной функц...
Расширения (пакеты)
 Пакет – коллекция функций, созданных для
выполнения определенного класса задач, или
колекция таблиц с данными (см. закла...
> install.packages("ISwR")
> install.packages("HSAUR2")
Author: Sergey Mastitsky
Author: Sergey Mastitsky
Author: Sergey Mastitsky
 Зайдите на страницу CRAN Task Views
и исследуйте ее содержимое
 Зайдите на сайт Inside-R и исследуйте
список пакетов
Au...
Upcoming SlideShare
Loading in …5
×

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

2,517 views

Published on

Рассмотрены основные понятия и средства языка статистических вычислений R.

Published in: Data & Analytics

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

  1. 1. Тема 2 Сергей Мастицкий БГУ, Минск, май 2014
  2. 2. 2.1. Первые шаги
  3. 3.  R работает по принципу «вопрос-ответ»  Команды вводятся после «знака подсказки» в командной строке, напр.: > plot(rnorm(1000)) 1000 случайно сгенерированных нормально распределенных значений Author: Sergey Mastitsky 0 200 400 600 800 1000 -3-2-10123 Index rnorm(1000)
  4. 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. 5. > x <- 2 > x [1] 2 > x + x [1] 4 > y <- 5 > x * y [1] 10 Author: Sergey Mastitsky
  6. 6. Можно использовать любые символы, но:  имена не должны начитаться с точки “.” и содержать пробелы  имена не должны начинаться с цифр  имена чувствительны к регистру: WT и wt – для R это разные переменные  Не следует использовать зарезервированные служебные имена: - c, q, t, C, D, F, I, T - diff, df, pt, и некоторые др. Author: Sergey Mastitsky
  7. 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. 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. 9. > mean(weight) [1] 74.33333 > sd(weight) [1] 15.42293 Author: Sergey Mastitsky
  10. 10. 2.2. R как язык программирования
  11. 11.  То, что мы вводим в командную строку, имеет более общее название – выражение (expression)  Выражения обычно включают имена переменных, операторы и функции: xbar <- sum(weight)/length(weight) функция имя переменной оператор Author: Sergey Mastitsky
  12. 12.  Выражения выполняют действия над объектами  Практически все, что мы создаем в R, можно назвать “объектом” x, weight, height, SD – все это объекты R – объекто-ориентированный язык Author: Sergey Mastitsky
  13. 13.  Объекты, содержащие данные (data objects) – векторы, матрицы, списки и таблицы данных  Функции (function objects) Author: Sergey Mastitsky
  14. 14. Функции
  15. 15.  Функция – имеющий имя набор команд, которые выполняют определенные операции над другими объектами: plot(), c(), sum(), mean()...  Фактичекие аргументы функций – объекты, к которым применяется функция: plot(height, weight)  Формальные аргументы – параметры, управляющие поведением функции: plot(height, weight, pch = 2) Author: Sergey Mastitsky
  16. 16. Скобки должны использоваться всегда, даже если мы не указываем никаких аргументов при вызове функции Типичный пример: ls() Author: Sergey Mastitsky
  17. 17. Векторы Подробнее см.: http://r-analytics.blogspot.de/2011/06/r_30.html
  18. 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. 19.  Часто встречаются на практике  В R обозначаются как NA: > c(2, NA, 10) [1] 2 NA 10  Операции над NA возвращают NA, и поэтому часто такие значения приходится исключать из анализа: > mean(c(2, NA, 10)) [1] NA Author: Sergey Mastitsky
  20. 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. 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. 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
  23. 23. Матрицы Подробнее см.: http://r-analytics.blogspot.de/2011/07/r_10.html
  24. 24.  Матрица – 2D-вектор  Широко используются в статистике  Могут быть использованы для хранения данных Author: Sergey Mastitsky
  25. 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. 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
  27. 27. Факторы Подробнее см.: http://r-analytics.blogspot.de/2011/07/r_17.html
  28. 28.  Фактор – качественная переменная, содержащая метки для групп данных (например, пол, место отбора проб, экспериментальная группа и т.д.)  Уровни фактора – конкретные категории такой переменной (например, “самец” и “самка”) Author: Sergey Mastitsky
  29. 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. 30. Этот способ тоже сработает, но лучше его не использовать: > sex <- c(0, 0, 1, 1, 1) > sex <- factor(sex) > sex [1] 0 0 1 1 1 Levels: 0 1 Author: Sergey Mastitsky
  31. 31. Списки Подробнее см.: http://r-analytics.blogspot.de/2011/07/r_13.html
  32. 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. 33. > data $Sex [1] "male" "male" "female" $Weight [1] 80 85 60 $Height [1] 1.75 1.80 1.68 Author: Sergey Mastitsky
  34. 34. > data$Sex [1] "male" "male" "female“ > data$Weight [1] 80 85 60 и т.д. … Author: Sergey Mastitsky
  35. 35. Таблицы данных Подробнее см.: http://r-analytics.blogspot.de/2011/07/r_22.html
  36. 36.  Таблица данных – список векторов и/или факторов одинаковой длины, упорядоченных в виде таблицы. Каждый ряд в такой таблице соответствует одному наблюдению. У рядов также могут быть имена. Author: Sergey Mastitsky
  37. 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. 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
  39. 39. Индексирование
  40. 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. 41.  Условный выбор: > height[height < 1.80] [1] 1.75 1.68 > weight[weight>=80 & weight<=85] [1] 80 85 Другие логические операторы: | (логическое “или”) ! (логическое “не”) Author: Sergey Mastitsky
  42. 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. 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. 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. 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
  46. 46. 2.3. Среда R
  47. 47. Рабочее пространство
  48. 48.  Рабочее пространство – часть памяти компьютера, где хранятся все объекты, созданные в ходе конкретной R-сессии (временно, пока не будут сохранены!)  Проверка содержимого рабочего пространства: > ls() ... В RStudio имеется закладка “Environment” Author: Sergey Mastitsky
  49. 49.  Периодически стоит проводить «уборку»: > rm(i)  Для удаления всех объектов (осторожно!): > rm(list = ls()) В RStudio: закладка “Environment”, кнопка “Clear All” Author: Sergey Mastitsky
  50. 50.  Сохранение текущего рабочего пространства (создает файл .Rdata в текущей рабочей директории): > save.image()  В RStudio: - Закладка “Environment” - Кнопка “Save Workspace As…” Author: Sergey Mastitsky
  51. 51.  Рабочая директория – папка, из которой R по умолчанию пытается загружать файлы (и сохранять в нее)  Проверка пути к текущей рабочей папке: > getwd() [1] "D:/DOCS"  Создание новой рабочей директории: > setwd("D:/DOCS/Analysis") В RStudio: Session/Set Working Directory/Choose Directory Author: Sergey Mastitsky
  52. 52. Скрипты
  53. 53.  Для выполнения нескольких однотипных/специализированных команд стоит сохранить их в виде скрипта  Опция 1: функция source() – загружает файл со скриптом и выполняет его  Опция 2: редактор скриптов в RStudio – позволяет выполнять несколько команд одновременно Author: Sergey Mastitsky
  54. 54. Author: Sergey Mastitsky
  55. 55. Получение помощи
  56. 56.  Имеется обширная встроенная справочная система: > help.start() или закладка Help в RStudio  Справка по конкретной функции: > help(plot) # или просто > ?plot  Справка по определенной теме: > help.search("correlation")  Справка по определенному пакету: > help(package = "name") Author: Sergey Mastitsky
  57. 57. Расширения (пакеты)
  58. 58.  Пакет – коллекция функций, созданных для выполнения определенного класса задач, или колекция таблиц с данными (см. закладку Packages в RStudio)  Для загрузки (уже установленного) пакета: > library(package)  Инсталляция нового пакета (требуется Интернет- соединение): > install.packages("имя_пакета") Author: Sergey Mastitsky
  59. 59. > install.packages("ISwR") > install.packages("HSAUR2") Author: Sergey Mastitsky
  60. 60. Author: Sergey Mastitsky
  61. 61. Author: Sergey Mastitsky
  62. 62.  Зайдите на страницу CRAN Task Views и исследуйте ее содержимое  Зайдите на сайт Inside-R и исследуйте список пакетов Author: Sergey Mastitsky

×