SlideShare una empresa de Scribd logo
1 de 62
Descargar para leer sin conexión
Тема 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

Más contenido relacionado

La actualidad más candente

Алгоритмы и структуры данных осень 2013 лекция 4
Алгоритмы и структуры данных осень 2013 лекция 4Алгоритмы и структуры данных осень 2013 лекция 4
Алгоритмы и структуры данных осень 2013 лекция 4Technopark
 
Лекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные спискиЛекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные спискиMikhail Kurnosov
 
Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Technopark
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиMikhail Kurnosov
 
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Python Meetup
 
Лекция 9. Поиск кратчайшего пути в графе
Лекция 9. Поиск кратчайшего пути в графеЛекция 9. Поиск кратчайшего пути в графе
Лекция 9. Поиск кратчайшего пути в графеMikhail Kurnosov
 
Лекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмовЛекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмовMikhail Kurnosov
 
Java осень 2013 лекция 2
Java осень 2013 лекция 2Java осень 2013 лекция 2
Java осень 2013 лекция 2Technopark
 
Лекция 2. Алгоритмы сортировки
Лекция 2. Алгоритмы сортировкиЛекция 2. Алгоритмы сортировки
Лекция 2. Алгоритмы сортировкиMikhail Kurnosov
 
Лекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графовЛекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графовMikhail Kurnosov
 
Python. Объектно-ориентированное программирование
Python. Объектно-ориентированное программирование Python. Объектно-ориентированное программирование
Python. Объектно-ориентированное программирование Theoretical mechanics department
 
Лекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные спискиЛекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные спискиMikhail Kurnosov
 
Алгоритмы и структуры данных осень 2013 лекция 3
Алгоритмы и структуры данных осень 2013 лекция 3Алгоритмы и структуры данных осень 2013 лекция 3
Алгоритмы и структуры данных осень 2013 лекция 3Technopark
 
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...pgdayrussia
 
Лекция 4: Стек. Очередь
Лекция 4: Стек. ОчередьЛекция 4: Стек. Очередь
Лекция 4: Стек. ОчередьMikhail Kurnosov
 
Лекция 4. Стеки и очереди
Лекция 4. Стеки и очередиЛекция 4. Стеки и очереди
Лекция 4. Стеки и очередиMikhail Kurnosov
 
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...Ontico
 
Лекция о языке программирования Haskell
Лекция о языке программирования HaskellЛекция о языке программирования Haskell
Лекция о языке программирования Haskellhusniyarova
 
Лекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовЛекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовMikhail Kurnosov
 

La actualidad más candente (20)

Алгоритмы и структуры данных осень 2013 лекция 4
Алгоритмы и структуры данных осень 2013 лекция 4Алгоритмы и структуры данных осень 2013 лекция 4
Алгоритмы и структуры данных осень 2013 лекция 4
 
Лекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные спискиЛекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные списки
 
Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
 
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
 
Лекция 9. Поиск кратчайшего пути в графе
Лекция 9. Поиск кратчайшего пути в графеЛекция 9. Поиск кратчайшего пути в графе
Лекция 9. Поиск кратчайшего пути в графе
 
Лекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмовЛекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмов
 
Java осень 2013 лекция 2
Java осень 2013 лекция 2Java осень 2013 лекция 2
Java осень 2013 лекция 2
 
Лекция 2. Алгоритмы сортировки
Лекция 2. Алгоритмы сортировкиЛекция 2. Алгоритмы сортировки
Лекция 2. Алгоритмы сортировки
 
Лекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графовЛекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графов
 
Python. Объектно-ориентированное программирование
Python. Объектно-ориентированное программирование Python. Объектно-ориентированное программирование
Python. Объектно-ориентированное программирование
 
Лекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные спискиЛекция 3: Бинарный поиск. Связные списки
Лекция 3: Бинарный поиск. Связные списки
 
Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировки
 
Алгоритмы и структуры данных осень 2013 лекция 3
Алгоритмы и структуры данных осень 2013 лекция 3Алгоритмы и структуры данных осень 2013 лекция 3
Алгоритмы и структуры данных осень 2013 лекция 3
 
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...
 
Лекция 4: Стек. Очередь
Лекция 4: Стек. ОчередьЛекция 4: Стек. Очередь
Лекция 4: Стек. Очередь
 
Лекция 4. Стеки и очереди
Лекция 4. Стеки и очередиЛекция 4. Стеки и очереди
Лекция 4. Стеки и очереди
 
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...
 
Лекция о языке программирования Haskell
Лекция о языке программирования HaskellЛекция о языке программирования Haskell
Лекция о языке программирования Haskell
 
Лекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовЛекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмов
 

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

Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3Яковенко Кирилл
 
Scala and LiftWeb presentation (Russian)
Scala and LiftWeb presentation (Russian)Scala and LiftWeb presentation (Russian)
Scala and LiftWeb presentation (Russian)Dmitry Stropalov
 
20100425 model based_testing_kuliamin_lectures01-03
20100425 model based_testing_kuliamin_lectures01-0320100425 model based_testing_kuliamin_lectures01-03
20100425 model based_testing_kuliamin_lectures01-03Computer Science Club
 
Систематизация экспрешнов в IE
Систематизация экспрешнов в IEСистематизация экспрешнов в IE
Систематизация экспрешнов в IERoman Komarov
 
Python dict: прошлое, настоящее, будущее
Python dict: прошлое, настоящее, будущееPython dict: прошлое, настоящее, будущее
Python dict: прошлое, настоящее, будущееdelimitry
 
Sergii Tsypanov "Performance 1001 Tips"
Sergii Tsypanov "Performance 1001 Tips"Sergii Tsypanov "Performance 1001 Tips"
Sergii Tsypanov "Performance 1001 Tips"LogeekNightUkraine
 
Производительность в Django
Производительность в DjangoПроизводительность в Django
Производительность в DjangoMoscowDjango
 
8 встреча — Язык программирования Python (В. Ананьев)
8 встреча — Язык программирования Python (В. Ананьев)8 встреча — Язык программирования Python (В. Ананьев)
8 встреча — Язык программирования Python (В. Ананьев)Smolensk Computer Science Club
 
Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1Pavel Egorov
 
Лекция 5. Встроенные коллекции и модуль collections.
Лекция 5. Встроенные коллекции и модуль collections.Лекция 5. Встроенные коллекции и модуль collections.
Лекция 5. Встроенные коллекции и модуль collections.Roman Brovko
 
[JAM 1.1] Clean Code (Paul Malikov)
[JAM 1.1] Clean Code (Paul Malikov)[JAM 1.1] Clean Code (Paul Malikov)
[JAM 1.1] Clean Code (Paul Malikov)Evgeny Kaziak
 
Web осень 2013 лекция 6
Web осень 2013 лекция 6Web осень 2013 лекция 6
Web осень 2013 лекция 6Technopark
 
AlgoCollections (RUS)
AlgoCollections (RUS)AlgoCollections (RUS)
AlgoCollections (RUS)Anton Bukov
 
Статический анализ: вокруг Java за 60 минут
Статический анализ: вокруг Java за 60 минутСтатический анализ: вокруг Java за 60 минут
Статический анализ: вокруг Java за 60 минутAndrey Karpov
 

Similar a Основы языка R (20)

Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3
 
Scala and LiftWeb presentation (Russian)
Scala and LiftWeb presentation (Russian)Scala and LiftWeb presentation (Russian)
Scala and LiftWeb presentation (Russian)
 
20100425 model based_testing_kuliamin_lectures01-03
20100425 model based_testing_kuliamin_lectures01-0320100425 model based_testing_kuliamin_lectures01-03
20100425 model based_testing_kuliamin_lectures01-03
 
Систематизация экспрешнов в IE
Систематизация экспрешнов в IEСистематизация экспрешнов в IE
Систематизация экспрешнов в IE
 
Python dict: прошлое, настоящее, будущее
Python dict: прошлое, настоящее, будущееPython dict: прошлое, настоящее, будущее
Python dict: прошлое, настоящее, будущее
 
Sergii Tsypanov "Performance 1001 Tips"
Sergii Tsypanov "Performance 1001 Tips"Sergii Tsypanov "Performance 1001 Tips"
Sergii Tsypanov "Performance 1001 Tips"
 
Производительность в Django
Производительность в DjangoПроизводительность в Django
Производительность в Django
 
8 встреча — Язык программирования Python (В. Ананьев)
8 встреча — Язык программирования Python (В. Ананьев)8 встреча — Язык программирования Python (В. Ананьев)
8 встреча — Язык программирования Python (В. Ананьев)
 
Charming python sc2-8
Charming python sc2-8Charming python sc2-8
Charming python sc2-8
 
Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1
 
Scala on android
Scala on androidScala on android
Scala on android
 
Jquery
JqueryJquery
Jquery
 
msumobi2. Лекция 1
msumobi2. Лекция 1msumobi2. Лекция 1
msumobi2. Лекция 1
 
Лекция 5. Встроенные коллекции и модуль collections.
Лекция 5. Встроенные коллекции и модуль collections.Лекция 5. Встроенные коллекции и модуль collections.
Лекция 5. Встроенные коллекции и модуль collections.
 
[JAM 1.1] Clean Code (Paul Malikov)
[JAM 1.1] Clean Code (Paul Malikov)[JAM 1.1] Clean Code (Paul Malikov)
[JAM 1.1] Clean Code (Paul Malikov)
 
Scala for android
Scala for androidScala for android
Scala for android
 
Web осень 2013 лекция 6
Web осень 2013 лекция 6Web осень 2013 лекция 6
Web осень 2013 лекция 6
 
msumobi2. Лекция 2
msumobi2. Лекция 2msumobi2. Лекция 2
msumobi2. Лекция 2
 
AlgoCollections (RUS)
AlgoCollections (RUS)AlgoCollections (RUS)
AlgoCollections (RUS)
 
Статический анализ: вокруг Java за 60 минут
Статический анализ: вокруг Java за 60 минутСтатический анализ: вокруг Java за 60 минут
Статический анализ: вокруг Java за 60 минут
 

Más de Sergey Mastitsky

Karataev_et_al._2003_Conchophthirus_emergenece.PDF
Karataev_et_al._2003_Conchophthirus_emergenece.PDFKarataev_et_al._2003_Conchophthirus_emergenece.PDF
Karataev_et_al._2003_Conchophthirus_emergenece.PDFSergey Mastitsky
 
AI_2007_2_1_Mastitsky_Makarevich
AI_2007_2_1_Mastitsky_MakarevichAI_2007_2_1_Mastitsky_Makarevich
AI_2007_2_1_Mastitsky_MakarevichSergey Mastitsky
 
Karatayev et al 2008 Aquatic invasions in Belarus
Karatayev et al 2008 Aquatic invasions in BelarusKaratayev et al 2008 Aquatic invasions in Belarus
Karatayev et al 2008 Aquatic invasions in BelarusSergey Mastitsky
 
Дисперсионный анализ (ANOVA) в системе R
Дисперсионный анализ (ANOVA) в системе RДисперсионный анализ (ANOVA) в системе R
Дисперсионный анализ (ANOVA) в системе RSergey Mastitsky
 
Корреляционный анализ в системе R
Корреляционный анализ в системе RКорреляционный анализ в системе R
Корреляционный анализ в системе RSergey Mastitsky
 
Реализация классических статистических тестов в системе R
Реализация классических статистических тестов в системе RРеализация классических статистических тестов в системе R
Реализация классических статистических тестов в системе RSergey Mastitsky
 
Загрузка данных в системе R
Загрузка данных в системе RЗагрузка данных в системе R
Загрузка данных в системе RSergey Mastitsky
 
Инсталляция системы статистических вычислений R
Инсталляция системы статистических вычислений RИнсталляция системы статистических вычислений R
Инсталляция системы статистических вычислений RSergey Mastitsky
 
Ковариационный анализ (ANСOVA) в системе R
Ковариационный анализ (ANСOVA) в системе RКовариационный анализ (ANСOVA) в системе R
Ковариационный анализ (ANСOVA) в системе RSergey Mastitsky
 

Más de Sergey Mastitsky (11)

Karataev_et_al._2003_Conchophthirus_emergenece.PDF
Karataev_et_al._2003_Conchophthirus_emergenece.PDFKarataev_et_al._2003_Conchophthirus_emergenece.PDF
Karataev_et_al._2003_Conchophthirus_emergenece.PDF
 
AI_2007_2_1_Mastitsky_Makarevich
AI_2007_2_1_Mastitsky_MakarevichAI_2007_2_1_Mastitsky_Makarevich
AI_2007_2_1_Mastitsky_Makarevich
 
mastitsky_article
mastitsky_articlemastitsky_article
mastitsky_article
 
Karatayev et al 2008 Aquatic invasions in Belarus
Karatayev et al 2008 Aquatic invasions in BelarusKaratayev et al 2008 Aquatic invasions in Belarus
Karatayev et al 2008 Aquatic invasions in Belarus
 
AI_2012_1_Claudi_etal
AI_2012_1_Claudi_etalAI_2012_1_Claudi_etal
AI_2012_1_Claudi_etal
 
Дисперсионный анализ (ANOVA) в системе R
Дисперсионный анализ (ANOVA) в системе RДисперсионный анализ (ANOVA) в системе R
Дисперсионный анализ (ANOVA) в системе R
 
Корреляционный анализ в системе R
Корреляционный анализ в системе RКорреляционный анализ в системе R
Корреляционный анализ в системе R
 
Реализация классических статистических тестов в системе R
Реализация классических статистических тестов в системе RРеализация классических статистических тестов в системе R
Реализация классических статистических тестов в системе R
 
Загрузка данных в системе R
Загрузка данных в системе RЗагрузка данных в системе R
Загрузка данных в системе R
 
Инсталляция системы статистических вычислений R
Инсталляция системы статистических вычислений RИнсталляция системы статистических вычислений R
Инсталляция системы статистических вычислений R
 
Ковариационный анализ (ANСOVA) в системе R
Ковариационный анализ (ANСOVA) в системе RКовариационный анализ (ANСOVA) в системе R
Ковариационный анализ (ANСOVA) в системе R
 

Основы языка 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