Решение комплексных уравнений в r studio

Содержание
  1. Функции в R
  2. Оглавление
  3. Помощь
  4. Текущее окружение
  5. Общая работа с объектами
  6. Ввод и вывод
  7. Создание объектов
  8. Индексирование
  9. Векторы
  10. Списки
  11. Матрицы
  12. Фреймы
  13. Работа с переменными
  14. Манипуляция данными
  15. Математика
  16. Матрицы
  17. Обработка данных
  18. Строки
  19. Дата и время
  20. Рисование графиков
  21. Рисование графиков на низком уровне
  22. Lattice-графика
  23. Оптимизация и подбор параметров
  24. Статистика
  25. Распределения
  26. Программирование
  27. 2 Введение в R
  28. 2.1 Установка R и Rstudio
  29. 2.2 Знакомство с RStudio
  30. 2.3 R как калькулятор
  31. Введение в R: часть 1
  32. Содержание
  33. Основные достоинства:
  34. Ресурсы в сети интернет для знакомства и освоения R
  35. Онлайн курсы
  36. Пакеты (библиотеки функций) в R
  37. Внешний вид RStudio
  38. Установка и запуск дополнительных пакетов
  39. R — язык функционального программирования
  40. Типы данных
  41. Векторы и типы данных
  42. Способы создания векторов
  43. Матрицы
  44. Массивы
  45. Factors
  46. Data.frames
  47. Формулы
  48. Списки
  49. Векторизация
  50. Особенности векторизации
  51. Имена элементов векторов, матриц, data.frames, списков и т.д.
  52. Преобразование типов и структур данных друг в друга
  53. Справка в R — прекрасный источник информации
  54. Индексация векторов, матриц, data.frames и т.д.
  55. Числовые индексы
  56. Текстовые индексы
  57. Логические индексы
  58. Индексы списков
  59. Индексы data.frames
  60. Особенности индексов
  61. Функции этого занятия
  62. Задания
  63. 💥 Видео

Видео:Работа с комплексными числами и функциями в RСкачать

Работа с комплексными числами и функциями в R

Функции в R

В R очень много разных полезных функций. И многие большие вещи можно сделать весьма быстро, написав очень мало кода. На официальном сайте есть замечательная шпаргалка на английском языке: R reference card. В сети есть несколько вольных урезанных переводов, но они не очень удобные. Ниже вашему вниманию представляется русифицированная модифицированная версия обзора основных функций R. Команды снабжены ссылками на online-мануал.

Оглавление

Помощь

  • help(topic), ?topic — справка про topic
  • help.search(“pattern”), ??pattern — глобальный поиск pattern
  • help(package = ) — справка о заданном пакете
  • help.start() — запустить помощь в браузере
  • apropos(what) — имена объектов, которые соответствуют what
  • args(name) — аргументы команды name
  • example(topic) — примеры использования topic

Текущее окружение

  • ls() — список всех объектов
  • rm(x) — удалить объект
  • dir() — показать все файлы в текущей директории
  • getwd() — получить текущую директорию
  • setwd(dir) — поменять текущую директорию на dir

Общая работа с объектами

  • str(object) — внутренняя структура объекта object
  • summary(object) — общая информация об объекте object
  • dput(x) — получить представление объекта в R-синтаксисе
  • head(x) — посмотреть начальные строки объекта
  • tail(x) — посмотреть последние строки объекта

Ввод и вывод

  • library(package) — подключить пакет package
  • save(file, …) — сохраняет указанные объекты в двочином XDR-формате, который не зависит от платформы
  • load() — загружает данные, сохранённые ранее с помощью команды save()
  • read.table — считывает таблицу данных и создаёт по ним data.frame
  • write.table — печатает объект, конвертируя его в data.frame
  • read.csv — считывает csv -файл
  • read.delim — считывание данных, разделённых знаками табуляции
  • save.image — сохраняет все объекты в файл
  • cat(…, file= , sep= ) — сохраняет аргументы, конкатенируя их через sep
  • sink(file) — выводит результаты выполнения других команд в файл в режиме реального времени до момента вызова этой же команды без аргументов

Создание объектов

  • from:to — генерирует последовательность чисел от from до to с шагом 1 , например 1:3
  • с(…) — объединяет аргументы в вектор, например c(1, 2, 3)
  • seq(from, to, by = ) — генерирует последовательность числел от from до to с шагом by
  • seq(from, to, len = ) — генерирует последовательность числел от from до to длины len
  • rep(x, times) — повторяет x ровно times раз
  • list(…) — создаёт список объектов
  • data.frame(…) — создаёт фрейм данных
  • array(data, dims) — создаёт из data многомерные массив размерностей dim
  • matrix(data, nrow = , ncol = , byrow = ) — создаёт из data матрицу nrow на ncol , порядок заполнения определяется byrow
  • factor(x, levels = ) — создаёт из x фактор с уровнями levels
  • gl(n, k, length = n*k, labels = 1:n) — создаёт фактор из n уровней, каждый из которых повторяется k раз длины length с именами labels
  • rbind(…) — объединяет аргументы по строкам
  • cbind(…) — объединяет аргументы по столбцам

Индексирование

Векторы

x[n]n -ый элемент
x[-n]все элементы, кроме n -го
x[1:n]первые n элементов
x[-(1:n)]все элементы, кроме первых n
x[c(1,4,2)]элементы с заданными индексами
x[«name»]элемент с заданным именем
x[x > 3]все элементы, большие 3
x[x > 3 & xвсе элементы между 3 и 5
x[x %in% c(«a»,»and»,»the»)]все элементы из заданного множества

Списки

x[n]список, состоящий из элемента n
x[[n]]n -ый элемент списка
x[[«name»]]элемент списка с именем name
x$nameэлемент списка с именем name

Матрицы

x[i, j]элемент на пересечении i -ой строки и j -го столбца
x[i,]i -ая строка
x[,j]j -ый столбец
x[,c(1,3)]заданное подмножество столбцов
x[«name», ]строка с именем name

Фреймы

x[[«name»]]столбец с именем name
x$nameстолбец с именем name

Работа с переменными

  • as.array(x), as.data.frame(x), as.numeric(x), as.logical(x), as.complex(x), as.character(x) — преобразование переменной к заданному типу is.na(x), is.null(x), is.array(x), is.data.frame(x), is.numeric(x), is.complex(x), is.character(x) — проверка на то, что данный объект обладает указанным типом
  • length(x) — число элементов в x
  • dim(x) — размерности объекта x
  • dimnames(x) — имена размерностей объекта x
  • names(x) — имена объекта x
  • nrow(x) — число строк x
  • ncol(x) — число столбцов x
  • class(x) — класс объекта x
  • unclass(x) — удаляет атрибут класса у объекта x
  • attr(x,which) — атрибут which объекта x
  • attributes(obj) — список атрибутов объекта obj

Манипуляция данными

  • which.max(x) — индекс элемента с максимальным значением
  • which.min(x) — индекс элемента с минимальным значением
  • rev(x) — реверсирует порядок элементов
  • sort(x) — сортирует элементы объекта по возрастанию
  • cut(x,breaks) — делит вектор на равные интервалы
  • match(x, y) — ищет элементы x , которые есть в y
  • which(x == a) — возвращает порядковые элементы x , которые равны a
  • na.omit(x) — исключает отсутствующие значения объекта
  • na.fail(x) — бросает исключение, если объект содержит отсутствующие значения
  • unique(x) — исключает из объекта повторяющиеся элементы
  • table(x) — создаёт таблицу с количеством повторений каждого уникального элемента
  • subset(x, …) — возвращает подмножество элемента, которое соответствует заданному условию
  • sample(x, size) — возвращает случайный набор размера size из элементов x
  • replace(x, list, values) — заменяет значения x c индексами из list значениями из values
  • append(x, values) — добавляет элементы values в вектор x

Математика

  • sin(x), cos(x), tan(x), asin(x), acos(x), atan(x), atan2(y, x), log(x), log(x, base), log10(x), exp(x) — элементарные математические функции
  • min(x), max(x) — минимальный и максимальный элементы объекта
  • range(x) — вектор из минимального и максимального элемента объекта
  • pmin(x, y), pmax(x, y) — возвращают вектор с минимальными (максимальными) для каждой пары x[i] , y[i]
  • sum(x) — сумма элементов объекта
  • prod(x) — произведение элементов объекта
  • diff(x) — возвращает вектор из разниц между соседними элементами
  • mean(x) — среднее арифметическое элементов объекта
  • median(x) — медиана (средний элемент) объекта
  • weighted.mean(x, w) — средневзвешенное объекта x ( w определяет веса)
  • round(x, n) — округляет x до n знаков после запятой
  • cumsum(x), cumprod(x), cummin(x), cummax(x) — кумулятивные суммы, произведения, минимумы и максимумы вектора x (i-ый элемент содержит статистику по элементам x[1:i] )
  • union(x, y), intersect(x, y), setdiff(x,y), setequal(x,y), is.element(el,set) — операции над множествами: объединение, пересечение, разность, сравнение, принадлежность
  • Re(x), Im(x), Mod(x), Arg(x), Conj(x) — операции над комплексными числами: целая часть, мнимая часть, модуль, аргумент, сопряжённое число
  • fft(x), mvfft(x) — быстрое преобразование Фурье
  • choose(n, k) — количество сочетаний
  • rank(x) — ранжирует элементы объекта

Матрицы

  • %*% — матричное умножение
  • t(x) — транспонированная матрица
  • diag(x) — диагональ матрицы
  • solve(a, b) — решает систему уравнений a %*% x = b
  • solve(a) — обратная матрица
  • colSums, rowSums, colMeans, rowMeans — суммы и средние по столбцам и по строкам

Обработка данных

  • apply(X,INDEX,FUN=) — возвращает вектор, массив или список значений, полученных путем применения функции FUN к определенным элементам массива или матрицы x ; подлежащие обработке элементы х указываются при помощи аргумента MARGIN ;
  • lapply(X,FUN) — возвращает список той же длины, что и х ; при этом значения в новом списке будут результатом применения функции FUN к элементам исходного объекта х
  • tapply(X,INDEX,FUN=) — применяет функцию FUN к каждой совокупности значений х, созданной в соответствии с уровнями определенного фактора; перечень факторов указывается при помощи аргумента INDEX
  • by(data,INDEX,FUN) — аналог tapply() , применяемый к таблицам данных
  • merge(a,b) — объединяет две таблицы данных ( а и b ) по общим столбцами или строкам
  • aggregate(x,by,FUN) — разбивает таблицу данных х на отдельные наборы данных, применяет к этим наборам определенную функцию FUN и возвращает результат в удобном для чтения формате
  • stack(x, …) — преобразует данные, представленные в объекте х в виде отдельных столбцов, в таблицу данных
  • unstack(x, …) — выполняет операцию, обратную действию функции stack()
  • reshape(x, …) — преобразует таблицу данных из «широкого формата» (повторные измерения какой-либо величины записаны в отдельных столбцах таблицы) в таблицу “узкого формата” (повторные измерения идут одно под одним в пределах одного столбца)

Строки

  • print(x) — выводит на экран x
  • sprintf(fmt, …) — форматирование текста в C-style (можно использовать %s, %.5f и т.п.)
  • format(x) — форматирует объект x так, чтобы он выглядел красиво при выводе на экран
  • paste(…) — конвертирует векторы в текстовые переменные и объединяет их в одно текстовое выражение
  • substr(x,start,stop) — получение подстроки
  • strsplit(x,split) — разбивает строку х на подстроки в соответствии с split
  • grep(pattern,x) (а также grepl , regexpr , gregexpr , regexec ) — поиск по регулярному выражению
  • gsub(pattern,replacement,x) (а также sub ) — замена по регулярному выражению
  • tolower(x) — привести строку к нижнему регистру
  • toupper(x) — привести строку к верхнему регистру
  • match(x,table), x %in% table — выполняет поиск элементов в векторе table , которые совпадают со значениями из вектора х
  • pmatch(x,table) — выполняет поиск элементов в векторе table , которые частично совпадают с элементами вектора х
  • nchar(x) — возвращает количество знаков в строке х

Дата и время

  • as.Date(s) — конвертирует вектор s в объект класса Date
  • as.POSIXct(s) — конвертирует вектор s в объект класса POSIXct

Рисование графиков

  • plot(x) — график x
  • plot(x, y) — график зависимости y от x
  • hist(x) — гистограмма
  • barplot(x) — столбчатая диаграмма
  • dotchart(x) — диаграмма Кливленда
  • pie(x) — круговая диаграмма
  • boxplot(x) — график типа “коробочки с усами”
  • sunflowerplot(x, y) — то же, что и plot() , однако точки с одинаковыми координатами изображаются в виде “ромашек”, количество лепестков у которых пропорционально количеству таких точек
  • coplot(x˜y | z) — график зависимости y от x для каждого интервала значений z
  • interaction.plot(f1, f2, y) — если f1 и f2 — факторы, эта фукнция создаст график со средними значениями y в соответствии со значениями f1 (по оси х ) и f2 (по оси у , разные кривые)
  • matplot(x, y) — график зависимости столбцов y от столбцов x
  • fourfoldplot(x) — изображает (в виде частей окружности) связь между двумя бинарными переменными в разных совокупностях
  • assocplot(x) — график Кохена-Френдли
  • mosaicplot(x) — мозаичный график остатков лог-линейной регрессии
  • pairs(x) — если х — матрица или таблица данных, эта функция изобразит диаграммы рассеяния для всех возможных пар переменных из х
  • plot.ts(x), ts.plot(x) — изображает временной ряд
  • qqnorm(x) — квантили
  • qqplot(x, y) — график зависимости квантилей y от квантилей х
  • contour(x, y, z) — выполняет интерполяцию данных и создает контурный график
  • filled.contour(x, y, z) — то же, что contour() , но заполняет области между контурами определёнными цветами
  • image(x, y, z) — изображает исходные данные в виде квадратов, цвет которых определяется значениями х и у
  • persp(x, y, z) — то же, что и image() , но в виде трехмерного графика
  • stars(x) — если x — матрица или таблица данных, изображает график в виде “звезд” так, что каждая строка представлена “звездой”, а столбцы задают длину сегментов этих “звезд”
  • symbols(x, y, …) — изображает различные символы в соответствии с координатами
  • termplot(mod.obj) — зображает частные эффекты переменных из регрессионной модели

Рисование графиков на низком уровне

  • points(x, y) — рисование точек
  • lines(x, y) — рисование линии
  • text(x, y, labels, …) — добавление текстовой надписи
  • mtext(text, side=3, line=0, …) — добавление текстовой надписи
  • segments(x0, y0, x1, y1) — рисование отрезка
  • arrows(x0, y0, x1, y1, angle= 30, code=2) — рисование стрелочки
  • abline(a,b) — рисование наклонной прямой
  • abline(h=y) — рисование вертикальной прямой
  • abline(v=x) — рисование горизонтальной прямой
  • abline(lm.obj) — рисование регрессионной прямой
  • rect(x1, y1, x2, y2) — рисование прямоугольника
  • polygon(x, y) — рисование многоугольника
  • legend(x, y, legend) — добавление легенды
  • title() — добавление заголовка
  • axis(side, vect) — добавление осей
  • rug(x) — рисование засечек на оси X
  • locator(n, type = “n”, …) — возвращает координаты на графике, в которые кликнул пользователь

Lattice-графика

  • xyplot(y˜x) — график зависимости у от х
  • barchart(y˜x) — столбчатая диаграмма
  • dotplot(y˜x) — диаграмма Кливленда
  • densityplot(˜x) — график плотности распределения значений х
  • histogram(˜x) — гистограмма значений х
  • bwplot(y˜x) — график типа “коробочки с усами”
  • qqmath(˜x) — аналог функции qqnorm()
  • stripplot(y˜x) — аналог функции stripplot(x)
  • qq(y˜x) — изображает квантили распределений х и у для визуального сравнения этих распределений; переменная х должна быть числовой, переменная у — числовой, текстовой, или фактором с двумя уровнями
  • splom(˜x) — матрица диаграмм рассеяния (аналог функции pairs() )
  • levelplot(z˜xy|g1g2) — цветной график значений z , координаты которых заданы переменными х и у (очевидно, что x , y и z должны иметь одинаковую длину); g1 , g2 … (если присутствуют) — факторы или числовые переменные, чьи значения автоматически разбиваются на равномерные отрезки
  • wireframe(z˜xy|g1g2) — функция для построения трехмерных диаграмм рассеяния и плоскостей; z , x и у — числовые векторы; g1 , g2 … (если присутствуют) — факторы или числовые переменные, чьи значения автоматически разбиваются на равномерные отрезки
  • cloud(z˜xy|g1g2) — трёхмерная диаграмма рассеяния

Оптимизация и подбор параметров

  • optim(par, fn, method = ) — оптимизация общего назначения
  • nlm(f,p) — минимизация функции f алгоритмом Ньютона
  • lm(formula) — подгонка линейной модели
  • glm(formula,family=) — подгонка обобщённой линейной модели
  • nls(formula) — нелинейный метод наименьших квадратов
  • approx(x,y=) — линейная интерполяция
  • spline(x,y=) — интерполяция кубическими сплайнами
  • loess(formula) — подгонка полиномиальной поверхности
  • predict(fit,…) — построение прогнозов
  • coef(fit) — расчётные коэффициенты

Статистика

  • sd(x) — стандартное отклонение
  • var(x) — дисперсия
  • cor(x) — корреляционная матрица
  • var(x, y) — ковариация между x и y
  • cor(x, y) — линейная корреляция между x и y
  • aov(formula) — дисперсионный анализ
  • anova(fit,…) — дисперсионный анализ для подогнанных моделей fit
  • density(x) — ядерные плотности вероятностей
  • binom.test() — точный тест простой гипотезы о вероятности успеха в испытаниях Бернулли
  • pairwise.t.test() — попарные сравнения нескольки независимых или зависимых выборок
  • prop.test() — проверка гипотезы о том, что частоты какого-либо признака равны во всех анализируемых группах
  • t.test() — тест Стьюдента

Распределения

  • rnorm(n, mean=0, sd=1) — нормальное распределение
  • rexp(n, rate=1) — экспоненциальное распределение
  • rgamma(n, shape, scale=1) — гамма-распределение
  • rpois(n, lambda) — распределение Пуассона
  • rweibull(n, shape, scale=1) — распределение Вейбулла
  • rcauchy(n, location=0, scale=1) — распределение Коши
  • rbeta(n, shape1, shape2) — бета-распределение
  • rt(n, df) — распределение Стьюдента
  • rf(n, df1, df2) — распределение Фишера
  • rchisq(n, df) — распределение Пирсона
  • rbinom(n, size, prob) — биномиальное распределение
  • rgeom(n, prob) — геометрическое распределение
  • rhyper(nn, m, n, k) — гипергеометрическое распределение
  • rlogis(n, location=0, scale=1) — логистическое распределение
  • rlnorm(n, meanlog=0, sdlog=1) — логнормальное распределение
  • rnbinom(n, size, prob) — отрицательное биномиальное распределение
  • runif(n, min=0, max=1) — равномерное распределение

Программирование

Работа с функциями:

  • function(arglist) — создание пользовательской функции
  • return(value) — возвращение значения
  • do.call(funname, args) — вызывает функцию по имени
  • if(cond) expr
  • if(cond) cons.expr else alt.expr
  • ifelse(test, yes, no)
  • for(var in seq) expr
  • while(cond) expr
  • repeat expr
  • break — остановка цикла

Видео:Биквадратное уравнение. Комплексные корни.Скачать

Биквадратное уравнение. Комплексные корни.

2 Введение в R

Видео:Комплексные корни квадратного уравненияСкачать

Комплексные корни квадратного уравнения

2.1 Установка R и Rstudio

Для работы с R необходимо его сначала скачать и установить.

  • R
    • на Windows, найдите большую кнопку Download R (номер версии) for Windows.
    • на Mac, если маку меньше, чем 5 лет, то смело ставьте *.pkg файл с последней версией. Если старше, то поищите на той же странице версию для вашей системы.
    • на Linux, также можно добавить зеркало и установить из командной строки:

В данной книге используется следующая версия R:

После установки R необходимо скачать и установить RStudio:

Если вдруг что-то установить не получается (или же вы просто не хотите устанавливать на компьютер лишние программы), то можно работать в облаке, делая все то же самое в веб-браузере:

Первый и вполне закономерный вопрос: зачем мы ставили R и отдельно еще какой-то RStudio? Если опустить незначительные детали, то R – это сам язык программирования, а RStudio – это среда (IDE), которая позволяет в этом языке очень удобно работать.

RStudio – это не единственная среда для R, но, определенно, самая удобная на сегодняшний день. Почти все пользуются именно ею и не стоит тратить время на поиск чего-то более удобного и лучшего. Если же вы привыкли работать с Jupyter Notebook, то в R обычно вместо него используется великолепный RMarkdown – с помощью которого и написан этот онлайн-учебник, кстати говоря. И с RMarkdown мы тоже будем разбираться!

Видео:Комплексные числа в уравненияхСкачать

Комплексные числа в уравнениях

2.2 Знакомство с RStudio

Так, давайте взглянем на то, что нам тут открылось:

Решение комплексных уравнений в r studio

В первую очередь нас интересуют два окна: 1 — Code Editor (окно для написания скриптов) 1 и 2 — R Console (консоль). Здесь можно писать команды и запускать их. При этом работа в консоли и работа со скриптом немного различается.

В 2 — R Console вы пишите команду и запускаете ее нажиманием Enter . Иногда после запуска команды появляется какой-то результат. Если нажимать стрелку вверх на клавиатуре, то можно выводить в консоль предыдущие команды. Это очень удобно для запуска предыдущих команд с небольшими изменениями.

В 1 — Code Editor для запуска команды вы должны выделить ее и нажать Ctrl + Enter ( Cmd + Enter на macOS). Если не нажать эту комбинацию клавиш, то команда не запустится. Можно выделить и запустить сразу несколько команд или даже все команды скрипта. Все команды скрипта можно выделить с помощью сочетания клавиш Ctrl + A на Windows и Linux, Cmd + A на macOS. 2 Как только вы запустите команду (или несколько команд), соответствующие строчки кода появятся в 2 — R Console, как будто бы вы запускали их прямо там.

Обычно в консоли удобно что-то писать, чтобы быстро что-то посчитать. Скрипты удобнее при работе с длинными командами и как способ сохранения написанного кода для дальнейшей работы. Для сохранения скрипта нажмите File — Save As. . R скрипты сохраняются с разрешением .R, но по своей сути это просто текстовые файлы, которые можно открыть и модифицировать в любом текстовом редакторе а-ля “Блокнот.”

3 — Workspace and History – здесь можно увидеть переменные. Это поле будет автоматически обновляться по мере того, как Вы будете запускать строчки кода и создавать новые переменные. Еще там есть вкладка с историей всех команд, которые были запущены.

4 — Plots and files. Здесь есть очень много всего. Во-первых, небольшой файловый менеджер, во-вторых, там будут появляться графики, когда вы будете их рисовать. Там же есть вкладка с вашими пакетами ( Packages ) и Help по функциям. Но об этом потом.

Видео:Тригонометрическая форма комплексного числаСкачать

Тригонометрическая форма комплексного числа

2.3 R как калькулятор

R – полноценный язык программирования, который позволяет решать широкий спектр задач. Но в первую очередь R используется для анализа данных и статистических вычислений. Тем не менее, многими R до сих пор воспринимается как просто продвинутый калькулятор. Ну что ж, калькулятор, так калькулятор.

Давайте начнем с самого простого и попробуем использовать R как калькулятор с помощью арифметических операторов + , — , * , / , ^ (степень), () и т.д.

Просто запускайте в консоли пока не надоест:

Видео:КОМПЛЕКСНЫЕ ЧИСЛА ДЛЯ ЧАЙНИКОВ ЗА 7 МИНУТСкачать

КОМПЛЕКСНЫЕ ЧИСЛА ДЛЯ ЧАЙНИКОВ ЗА 7 МИНУТ

Введение в R: часть 1

Pavel Polishchuk, 2014

Видео:Системы комплексных уравненийСкачать

Системы комплексных уравнений

Содержание

  1. Общее представление о языке R.
  2. Типы и структуры данных.
  3. Векторизация.
  4. Преобразование разных типов и структур данных друг в друга.
  5. Индексация.

R — бесплатное свободно распространяемое программное обеспечение с открытым исходным кодом.
http://cran.r-project.org/

Находит широкое применение в различных областях знаний для моделирования, статистического анализа и обработки данных.

Основные достоинства:

  • Быстродействие
  • Гибкость
  • Разнообразие существующих пакетов, расширяющих базовый функционал
  • Кроссплатформенность
  • Активное сообщество (http://stackoverflow.com/questions/tagged/r)

Ресурсы в сети интернет для знакомства и освоения R

  1. http://www.twotorials.com/ — двухминутные видео в стиле “how to …”
  2. http://www.statmethods.net/ — QuickR, описываются основные возможности языка

Онлайн курсы

  1. https://www.coursera.org/course/rprog — “Программирование на языке R”, начало курса 2 июня 2014
  2. https://www.codeschool.com/courses/try-r

Пакеты (библиотеки функций) в R

На февраль 2014 года в официальном репозитории R (CRAN) собрано 5246 пакета, которые представляют самые различные области знаний. Все эти пакеты свободно доступны на официальном сайте и существующих зеркалах.
http://cran.r-project.org/

Установка новых пакетов возможна через консоль R командой install.packages либо через графический интерфейс.

Среди существующих графических оболочек для работы с R следует отметить RStudio, которая отличается удобством и постоянно расширяющимся функционалом.
http://www.rstudio.com/

Внешний вид RStudio

Важно! R является регистрозависимым языком, поэтому надо быть внимательным при написании имен команд и переменных. Переменные big_table и Big_table рассматриваются как разные.

Установка и запуск дополнительных пакетов

Удобный способ уставновки дополнительный пакетов через графический интерфейс RStudio. Важно отметить галочкой автоматическую уставновку зависимостей.

Установка пакета data.table :

Загрузка пакета в рабочую область осуществляется через функции

Использовать функции из установленных пакетов, без их загрузки в рабочую область можно используя следующий вызов:

Если необходимо использовать много различных функций, содержащихся в пакете, или происходит частое обращение к ним в ходе работы, то удобнее использовать первый вариант — загрузка всего пакета в рабочую область.
В случае же, если функция вызывается редко или существует конфликт имен (разные функции в разных пакетах имеют одинаковое название), то предпочтительным становится второй вариант вызова функций, при котором явно указывается какая функция и из какого пакета должна использоваться.

R — язык функционального программирования

Функции производят операции над объектом и возвращают результат, при этом передаваемый объект не изменяется.

Если необходимо изменить состояние объекта, то результат функции присваивается переменной обозначающей этот объект.

Любая операция в R это функция

Видео:R для каждого, Урок 1Скачать

R для каждого, Урок 1

Типы данных

Типы данных в порядке увеличения приоритета:

  1. Логические (logical)
  2. Целочисленные (integer)
  3. Вещественные числа (numeric)
  4. Комлексные числа (complex)
  5. Текстовые (character)
  6. Списки (list)

Векторы и типы данных

Вектор может содержать данные только одного типа.

Какой класс будет иметь вектор?

Способы создания векторов

Матрицы

Матрица — двумерный набор элементов одного типа (таблица).

Массивы

Массив — многомерный набор элементов одного типа.

Factors

Factor — представляет номинальную или ранговую шкалу. Используется для представления Y в классификационных моделях.

Data.frames

Data.frame — двумерный набор данных (таблица). В отличие от матриц, колонки в data.frame могут содержать данные различного типа. Однако тип данных внутри каждой колонки может быть только один. Это объясняется тем, что data.frame это список векторов (колонок). Поэтому к data.frame могут быть применены различные функции применимые к спискам.

Формулы

Формулы — специальная форма выражения отношений между переменными в уравнении. Формулы используются при построении моделей для определения функциональной зависимости между параметрами.

Линейная комбинация (+):

Линейная комбинация с отсутствующим свободным членом (+0)

Функция идентичности I(), при этом выражение в скобках рассматривается как обычное математическое.

Формулы могут содержать математические функции

Символ точки (.) подставляет все имеющиеся переменные. Функция зависимости y от всех остальных переменных, которые будут передаваться в функцию выглядит так

Примеры формул
СинтаксисМодельПояснение
Y

A

( Y = beta_ + beta_A )Уравнение регрессии с неявно заданным свободным членом
Y

A + 0

( Y = beta_A )Уравнение регрессии без свободного члена
Y

A + B

( Y = beta_ + beta_A + beta_B )Уравнеие модели первого порядка
Y

A + I(A^2)

( Y = beta_ + beta_A + beta_A^2 )Уравнеие модели второго порядка с одной переменной
Y

A:B

( Y = beta_ + beta_AB )Уравнение модели первого порядка, в которое входят только произведения переменных
Y

A*B

( Y = beta_ + beta_A + beta_B + beta_AB )Полное уравнение модели первого порядка, аналогично Y

A + B + A:B

Y

(A + B + C)^2

( Y = beta_ + beta_A + beta_B + beta_C + beta_AB + beta_AC + beta_BC )Модель первого порядка включающая все произведения до порядка n, аналогично Y

A*B*C — A:B:C

Списки

Списки содержат упорядоченный набор элементов, каждый из которых может являться вектором, матрицей, массивом, списком и т.д.

Как правило в виде списков удобно хранить либо какие-то однотипные данные соответствующие разным итерациям, например, множество моделей. Или хранить разнородные данные, которые имеют смысловую связь, например, различные статистические характеристики отдельной модели.

Видео:Комплексные числа: начало. Высшая математика или школа?Скачать

Комплексные числа: начало. Высшая математика или школа?

Векторизация

В R действия выполняются поэлементно сразу над всем набором данных (будь то вектор, матрица, data.frame и т.д.). Векторные вычисления очень эффективны, поэтому всегда когда нужно совершить действия над элементами вектора (матрицы и т.д.) предпочтительнее использовать векторизацию, а не циклы.

Кстати оператор присваивания тоже является функцией, и присвоение можно выполнить в таком виде

Сложение двух векторов одинаковой длины происходит поэлементно

Как упоминалось, векторные вычисления могут производиться над любой структурой данных (вектор, матрица, data.frame и т.д.). Пусть у нас есть матрица

Умножим все ее элементы на 2, или возведем во вторую степень

Особенности векторизации

Если два вектора имеют различное количество элементов, то вектор меньшей длины будет повторяться столько раз чтобы соответствовать длине большего вектора.

Если длина большего вектора кратна длине меньшего вектора, такая операция будет произведена неявно, без уведомления пользоателя.

В случае если длины комбинируемых векторов различны, то будет произведено циклическое совмещение элементов меньшего вектора относительно элементов большего вектора и будет сгенерировано предупреждение.

Видео:Решение уравнений с комплексными числамиСкачать

Решение уравнений с комплексными числами

Имена элементов векторов, матриц, data.frames, списков и т.д.

Все объекты поддерживают присвоение имен содержащимся в них элементам.

Обычный и именованный вектор

Другой способ создания именованного вектора

Аналогично векторам матрицы и data.frames имеют такие свойства как rownames и colnames , которые позволяют изменять имена колонок и строк.

Удаление имен осуществляется присвоением специального типа NULL

Или для векторов

При этом к элементам уже нельзя будет обращаться по имени, а только по индексу.

Видео:Изобразить область на комплексной плоскостиСкачать

Изобразить область на комплексной плоскости

Преобразование типов и структур данных друг в друга

Преобразование типов данных осуществляется через группу функций, начинающихся на as.

Пример конвертации целочисленного вектора в текстовый

Особенности приведения чисел выраженных как factors к числовому виду.
Преобразуем вектор целых чисел в номинальную шкалу (factor).

Для обратной конвертации использование функции as.integer недостаточно.

Это связано с внутренним представлением типа данных factor. Эта структура представляет собой набор целочисленных значений, каждому из которых присвоено имя. В данном примере именами являются значения 1 и 0.
Поэтому для корретного преобразования factor в целочисленный тип данных необходимо предварительно провести конвертацию в текстовый вид.

Данная операция часто вызывает затрудние и служит причиной ошибок.

Подобно преобразованию типов данных возможно приведение различных структур данных к другому типу с помощью того же семейства функций, начинающихся на as. .

Преобразоваание матрицы в data.frame

Видео:Математика без Ху!ни. Комплексные числа, часть 1. Введение.Скачать

Математика без Ху!ни. Комплексные числа, часть 1. Введение.

Справка в R — прекрасный источник информации

Полное описание функций и возвращаемых ими значений с примерами можно найти в справке.

Дополнительно можно вызывать справку клавишей F1, когда курсор стоит на имени функции в тексте скрипта или в консоли.

Если необходимо найти какую-либо функцию по ее имени или части имени, то удобно пользоваться функциями из пакета sos .
Установите пакет sos и выполните следующие команды:

Видео:комплЕксные ЧИСЛА решение примеров МАТЕМАТИКАСкачать

комплЕксные ЧИСЛА решение примеров МАТЕМАТИКА

Индексация векторов, матриц, data.frames и т.д.

Индексация — исключительно эффективный и мощный инструмент для работы с данными.

Индексы могут быть:

Для индексирования используется три типа выражений:

  1. [ — выбирает элементы вектора/списка/массива и т.д.
  2. $ — выбирает один элемент из data.frame/списка по его имени.
  3. [[ — выбирает элементы из вектора/списка/массива и т.д, но отбрасывает имена, если они есть.

Числовые индексы

Выбор элементов вектора по их индексу

Из этого примера видно, что для индексирования и выбора элементов на самом деле используется вектор индексов.

Чтобы выбрать каждый второй элемент по индексу надо сгенерировать вектор, состоящий из четных чисел и использовать его для индексации исходного вектора.

Для удаления элементов по значению индекса перед ними добавляют знак минус

Особенности индексирования позволяют менять положение элементов и дублировать их. Это очень эффективный прием, о котором часто забывают.

С точки зрения индексирования матрицы и data.frames почти ничем не отличаются.

Создадим тестовый набор данных:

Выберем элемент строки 1 и колонки 2

Выберем все значения строки 1. Результатом будет новый data.frame

Выберем все значения колонки 1. Результатом будет вектор! Мы говорили выше, что data.frame это список колонок-векторов, и при выборе одной колонки присходит автоматическое преобразование результата к ветору.

Чтобы избежать этого необходимо добавить опцию drop . Теперь результатом будет data.frame

Для выбора блоков данных в качестве индексов строк и стобцов можно использовать

Отрицательные индексы используются для удаления соответствующих колонок и строк (обратите внимание, что удаляется не один элемент а колонки и строки):

что аналогично предыдущему примеру, приводящему к тому же результату

Текстовые индексы

Текстовые индексы работают аналогично числовым

Выбор блока данных

Для текстовых индексов отсутствует возможность использования отрицательных значений индексов, т.е. чтобы удалить строку/колонку необходимо сформировать вектов с именами строк/колонок, которые необходимо оставить.

Логические индексы

  1. & — И (AND)
  2. | — ИЛИ (OR)
  3. , = — меньше, больше, меньше или равно, больше или равно
  4. == — равно
  5. != — не равно
  6. ! — НЕ (NOT)

Генерация логического индекса (вектора) для вектора a

который можно использовать для выбора соответствующих элементов

Возможна комбинация логических индексов с использованием операторов AND (&) и OR (|)

Логическое отрицание, оператор NOT (!), инвертирует значения логических индексов

Логический индекс (вектор) можно преобразовать в числовой. Функция which возвращает порядковые номера элементов, значение которых TRUE

Индексы списков

Для извлечения определенных элементов списка можно использовать числовые, текстовые и логические индексы. Однако при индексации списков есть некоторые особенности.
Создадим произвольный именованый список из двух элементов.

Выберем первый элемент списка запросом показанным ниже.

Обратите внимание, что в результате мы получим новый список содержащий только один элемент. Проверим это

Выберем первый элемент списка используя другую функцию

В этом случае запрос вернул содержимое первого элемента списка — целочисленный вектор.
Это важная особенность, которую упускают начинающие.

Альтернативный вариант доступа к содержимому одного элемента списка по его имени возможен с использоваем специальной конструкции ($)

Это аналогично следующему вызову с использованием текстового индекса

Индексы data.frames

Выборка данных из data.frames была описана выше и ничем не отличается от других структур данных (вектров, матриц и т.д.). Единственная особенность вытекает из того, что data.frame это список векторов (колонок), то для выбора одной колонки по имени можно использовать конструкцию аналогичную для списков

Такое выражение всегда возвращает вектор.

Особенности индексов

Если идет обращение к несуществующему индексу, то вернется специальное значение NA

NA специальное значение указывающее, что значение не определено (Not Available).

Если присваивать значение элементу с несуществующим индексом, то этот элемент будет создан.

Другой пример в результате которого создаются NA

Для проверки является ли значение NA используется специальная функция

Все то же самое справедливо и для текстовых индексов

Аналогично для того, чтобы добавить новый элемент в список (колонку/строку в data.frame) используется новое имя или числовой индекс.
Пример с data.frame. Создадим data.frame и добавим новую переменную, которая будет равняться значению первой колонки во второй степени.

Пример со списком. Создадим именованый список из двух элементов и добавим к нему третий элемент.

Другие материалы с примерами по использованию индексов:
http://adv-r.had.co.nz/Subsetting.html от Hadley Wickham

Функции этого занятия

Видео:Решение уравнений на комплексной плоскостиСкачать

Решение уравнений на комплексной плоскости

Задания

  1. Выбрать значения var1, var2, var3 для case1.
  2. Выбрать значения всех переменных для case2, которые больше 22.
  3. Выбрать имена переменных для колонок 1 и 3.
  4. Добавить колонку с именем Y и значениями -1, 0, 1.
  5. Удалить строку case2 .
  6. Значения второй колонки возвести в третью степень.

💥 Видео

Формула Муавра ➜ Вычислить ➜ (5+5i)⁷Скачать

Формула Муавра ➜ Вычислить ➜ (5+5i)⁷

Комплексные числа. Тригонометрическая форма. Формула Муавра | Ботай со мной #040 | Борис Трушин !Скачать

Комплексные числа. Тригонометрическая форма. Формула Муавра | Ботай со мной #040 | Борис Трушин !

Решение квадратных уравнений в поле комплексных чиселСкачать

Решение квадратных уравнений в поле комплексных чисел

Математика без Ху!ни. Комплексные числа, часть 3. Формы записи. Возведение в степень.Скачать

Математика без Ху!ни. Комплексные числа, часть 3. Формы записи. Возведение в степень.

Математика без Ху!ни. Комплексные числа, часть 4. Извлечение корня n-й степени.Скачать

Математика без Ху!ни. Комплексные числа, часть 4. Извлечение корня n-й степени.

Тригонометрическая и показательная форма комплексного числа: Действия и Бонус | Высшая математикаСкачать

Тригонометрическая и показательная форма комплексного числа: Действия и Бонус | Высшая математика
Поделиться или сохранить к себе: