Арифметика и простые функции

ВR существуют много функций для управления данными. Самая простая из них c():

> c (1:5, seq (10, 11, 0.2))

[1] 1.0 2.0 3.0 4.0 5.0 10.0 10.2 10.4 10.6 10.8 11.0

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

> x <-c (1,2,3,4)

> y <-c (1,1,1,1)

> z <-x + y

> z

[1] 2.0 3.0 4.0 5.0

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

Например:

> x <-c (1,2,3,4)

> y <-c (1,2)

> z <-x+y

> z

[1] 2 4 4 6

> x <-c (1,2,3)

> y <-c (1,2)

> z <-x+y

Warning message:

longer object length

is not a multiple of shorter object length in: x + y (Предупреждающее сообщение:Объект большей длины не кратен объекту меньшей длины в: x + y)

> z

[1] 2 4 4

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

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

> x <-c (1,2,3,4)

> а<-10

> z <-a*x

> z

[1] 10 20 30 40

Для создания выражений могут быть использованы следующие арифметические операторы:+,-, *,/, и ^ (для степеней), %% (x %% y - остаток от деления), и %/% (x % / % y для деления нацело (возвращает целую часть от деления)).

В выражении можно использовать также функции.

Некоторые из функций представлены в следующей таблице:

sum(x) Сумма элементов объекта х
prod(x) Произведение элементов объекта х
max(x) Максимальное значение из объекта х
min(x) Минимальное значение из объекта х
which.max(x) Индекс максимального значения объекта х
which.min(x) Индекс минимального значения объекта х
range(x) Минимальное и максимальное значения объекта х
length(x) Число элементов в объекте х
mean(x) Среднее значение элементов объекта х
median(x) Медиана объекта х
var(x) или cov(x) Дисперсия элементов(рассчитанная на n-1); если х матрица или data.frame, то вычисляется дисперсионно-ковариационная матрица.
cor(x) Корреляция матрицы х.
var(x,y) или cov(x) Ковариация между х и у или между столбцами х и столбцами у, если х и у матрицы или data.frames
cor(x,y) Линейная корреляция между х и у или корреляционную матрицу, если они матрицы или data.frames

Все эти функции возвращают единственное значение (вектор длины 1), кроме range() и var(), cov() и cor(), которые могут возвращать матрицу.

Следующие функции возвращают более сложные результаты:

round(x,n) округляет элементы x до n знаков после запятой
rev(x) перестановка элементов x в обратном порядке
sort(x) сортирует элементы x в возрастающем порядке; сортировать в убывающем порядке rev(sort(x))
rank(x) выдает классы элементов x
log(x,base) вычисляет логарифм x с основным base
pmin(x,y,...) вектор, в котором i-й элемент минимальный из x [i], y [i]...
pmax (x, y...) вектор, в котором I-й элемент максимальный из x [i], y [i]...
cumsum(x) вектор, i-й элемент которого является суммой от x [1] до x [i]
cumprod (x) вектор, i-й элемент которого является произведением от x [1] до x [i]
cummin (x) вектор, i-й элемент которого является минимальным из элементов от x [1] до x [i]
cummax (x) вектор, i-й элемент которого является максимальный из элементов от x [1] до x [i]
match(x,y) возвращает вектор той же длины что и вектор x с элементами x, которые находятся в y (иначе NA)
choose(n,k) вычисляет комбинации k событий среди n повторений
na.omit(x) игнорирует наблюдения с отсутствующими данными (NA) (игнорирует соответствующую строку, если x является матрицей или data.frame)
na.fail(x) выдает сообщение об ошибках, если x содержит NA (s)
table(x) возвращает таблицу с номерами различных значений x (обычно для целых чисел или коэффициентов(факторов))
subset(x,...) возвращает выборку x относительно критерия (...) в зависимости от режима x (обычно для сравнения: x$V1 <10); если x - data.frame, опция select позволяет идентифицировать переменные, которые будут сохранены

Операции с матрицами

R имеет средства для вычисления матриц и управления ими. Матрица может быть создана при помощифункции matrix():

> matrix (data=5, nr=2, nc=2)

  [, 1] [, 2]
[1,]
[2,]

> matrix (1:6, nr=2, nc=3)

  [, 1] [, 2] [, 3]
[1,]
[2,]

Функции rbind() и cbind() связывают (объединяют) матрицы относительно строк или столбцов, соответственно:

> m1 <-matrix (data=1, nr=2, nc=2)

> m2 <-matrix (data=2, nr=2, nc=2)

> rbind (m1, m2)

  [,1] [,2]
[1,]
[2,]
[3,]
[4,]

> cbind (m1, m2)

  [,1] [,2] [,3] [,4]
[1,]
[2,]

Оператор произведения двух матриц – “%* %”. Например, рассматривая две матрицы m1 и m2 созданные выше:

> rbind (m1, m2) % * % cbind (m1, m2)

мы получим следующий результат:

  [,1] [,2] [,3] [,4]
[1,]
[2,]
[3,]
[4,]

> cbind (m1, m2) % * % rbind (m1, m2)

  [,1] [,2]
[1,]
[2,]

Транспонирование матрицы производится функцией t(); эта функция также подходит для data.frame.

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

> diag (m1)

[1] 1 1

> diag (rbind (m1, m2) % * % cbind (m1, m2))

[1] 2 2 8 8

> diag (m1) <-10

> m1

  [,1] [,2]
[1,]
[2,]

> diag (3)

  [,1] [,2] [,3]
[1,]
[2,]
[3,]

> v <-c (10,20,30)

> diag (v)

  [,1] [,2] [,3]
[1,]
[2,]
[3,]

> diag (2.1, nr=3, nc=5)

  [,1] [,2] [,3] [,4] [,5]
[1,] 2.1 0.0 0.0
[2,] 0.0 2.1 0.0
[3,] 0.0 0.0 2.1

Графики в R

R предлагает большое разнообразие графиков. Чтобы понять идею, можно напечатать demo (graphics). Простоневозможно описать все возможностиR в отображении графиков, особенно когда каждый графическая функция имеет большое количество параметров.

Сначала несколько подробностей относительно того, как управлять графическими окнами.