-
Notifications
You must be signed in to change notification settings - Fork 0
R course, Lecture 2
esengie edited this page Oct 24, 2013
·
1 revision
- Простейшие
- Модуль и знак числа:
abs(),sign()
- Аналитические
- Степенные:
- Степень:
x^n -
exp(),log(),sqrt() -
expm1(x)===exp(x) - 1иlog1p(x)===log(1 + x)более точны при |X| << 1. - Логарифмы по двоичному, десятичному и произвольному основанию:
log2(),log10(),logb(x, base).
- Степень:
- Тригонометрические:
sin(),cos(),tan() - Гиперболические:
sinh(),cosh(),tanh() - Обратные к ним:
asin(),acos(),atan(),atan2(x, y),asinh(),acosh(),atanh() - Все данные функции векторизованы и верно работают на комплексных значениях.
- Комбинаторные
- Число сочетаний из
nпоk:choose(n, k). При этомnне обязательно целое (в отличие отk, которое всегда целое). - Факториал:
factorial(x). Внутри вызываетgamma(x + 1). - Гамма-функция:
gamma(x). Подробнее про нее: Gamma function. - Эти функции векторизованы, но для комплексного переменного не не имеют смысла
- Комплексного переменного
- Модуль и аргумент числа:
Mod(z),Arg(z). Данные функции связаны следующим отношением со своим аргументом: Mod(Z) * exp(Arg(Z)) === Z. - Комплексное сопряжение:
Conj(z). - Функции также векторизованы, разумеется.
- Полезные константы
- Пи:
pi= 3.1415... -
.Machine$double.eps--- наименьшее положительное число, такое что 1 +.Machine$double.eps!= 1. Для сравнения вещественных чисел следует использовать tolerance.Machine$double.eps^.5(по умолчанию вall.equal()именно такой) - Сведения о текущей платформе:
.Machine. Подробнее здесь. - Сведения о версии R:
version
- Общие сведения
- Большинство приведённых функций обладает аргументом
na.rm, указывающим, отбрасывать NA (na.rm = TRUE), или учитывать его (na.rm = FALSE, по умолчанию). - Проверка значений в векторе на адекватность:
is.finite(x)вернётTRUEна позиции числа, если число адекватное (не является ничем из-Inf,Inf,NA,NaN,1i*Inf). - Выкинуть из вектора все неконечные значения:
v <- v[is.finite[v].
- Основные скалярнозначные функции
- Длина вектора:
length(v), работает на присваивание. - Максимум, минимум, сумма, произведение:
max(),min(),sum(),prod(). Если передано несколько векторов, то они объединяются и по объединенным считается функция. -
range()возвращает вектор из минимума и максимума, то естьrange(v)===c(min(v), max(v)). - Индекс первого максимального элемента:
which.max(v). Минимального:which.min(v).
- Основные векторнозначные функции
-
rev()переворачивает вектор задом наперёд. -
sort()сортирует элементы вектора. По умолчанию элементы сортируются по возрастанию. Параметрdecreasing = TRUEзадает сортировку по убыванию. -
order()возвращает перестановку, которая упорядочивает вектор. Сортировка стабильная. -
rank()возвращает ранг (номер в переупорядоченном ряду) каждого элемента в векторе. Отличается отorder()тем, что позволяет задавать реакцию на совпадающие элементы. -
unique()выбросит все повторы, оставив первые вхождения. -
sample()перемешивает элементы вектора в случайном порядке. -
which()принимает на вход логический вектор, возвращает вектор, содержащий индексы истинных аргументов. -
pmin(v1, v2, v3,...),pmax(v1, v2, v3, ...)параллельное покомпонентное вычисление максимумов или минимумов для нескольких векторов. -
diff(v)возвращает вектор из разностей соседних элементов.diff(v) === v[-1] - v[-length(v)]. - Накопленные суммы, произведения, минимумы и максимумы:
cumsum(),cumprod(),cummin(),cummax().
- Статистические функции.
- Среднее, дисперсия, стандартное отклонение:
mean(),var(),sd(). Подробнее: Дисперсия случайной величины, Среднеквадратичное отклонение. - Медиана, медианное абсолютное отклонение:
median(),mad(). -
quantile(h, levels)возвращает вектор из квантилей уровней levels для выборки h. -
summary(v)для вектора выводитmin(v),max(v),mean(v),quantile(v, c(0.25, 0.5, 0.75)). - В пакете
e1071асимметрия и эксцесс:skewness(),kurtosis(). Подробнее: Skewness, Kurtosis. -
table(h)возвращает именованный вектор частот. Имена --- СТРОКОВОЕ представление соответствующих элементов.
Пример:
tbl <- table(c(0, 1, 2, 3, 3, 2, 2, 2, 2, 0))
tbl[3]--- частота третьего по величине элемента (т.е. количество двоек, 5)
tbl["3"]--- частота троек (т.е. количество троек, 2)
Если вы хотите найти количество вхождений числового значения, заданного переменной, используйтеas.character()
- Содание матрицы:
-
mx <- matrix(data, nrow, ncol, byrow = FALSE). Параметрbyrowопределяет способ укладки вектораdataв матрицу, по умолчанию развертка развёртка по столбцам.
- Способы доступа к элементам матрицы, экзотические:
-
mx[логическая матрица]вернет вектор из элементов, значение в логической матрице для которыхTRUE. Работает на присваивание. -
mx[матрица из двух столбцов]элементы строки подаваемой матрицы являются парами индексов выбираемых элементов. Работает на присваивание.
- Основные функции:
-
dim(mx)получает размерность матрицы, работает на присваивание. При изменении матрица "переразвернется" из вектора, вытянутого по столбцам. - Транспонирование матрицы:
t(mx). - Определитель матрицы:
det(mx). - Обратная матрица:
solve(mx). - Решение системы ЛУ
A %*% x = y:solve(A, y),yможет быть матрицей. - Поэлементное умножение матриц:
mx1 * mx2. - Алгебраическое умножение матриц:
mx1 %*% mx2. Вектор считается вектором-столбцом, но при умножении вектора на матрицу справа вектор транспонируется автоматически. Перемножение векторов как матриц интерпретируется как умножение строки на столбец, и результат --- число. -
crossprod(mx1, mx2)эквивалентноt(mx1) %*% mx2, но немного быстрее. Если второй аргумент упущен, то он считается равным первому. -
tcrossprod(mx1, mx2)эквивалентноmx1 %*% t(mx2), аналогично предыдущему. -
outer(v1, v2)интерпретирует умножение векторов, как умножение столбца на строку, и результат --- матрица. Аналогично (но немного быстрее) работаетtcrossprod(v1, v2)для двух векторов. -
diagведет себя по-разному в зависимости от типа аргумента:-
diag(N)единичная матрица N-ого порядка. -
diag(v)диагональная матрица с элементами вектораvна диагонали. -
diag(mx)диагональ матрицы mx, работает на присваивание. След матрицы:sum(diag(mx)).trace()--- это вообще про другое.
-
-
rbind(),cbind()склеивание матриц по строкам или по столбцам. Если какая-то из матриц недостаточной длины, то будет использоваться переписывание. Вектор будет автоматически повернут вдоль направления склейки. На примитивном восприятии,rbind()склеивает матрицы, прилепливая вторую снизу,cbind()склеивает матрицы, прилепливая вторую справа. Можно склеивать и несколько матриц, не обязательно строго две. - Средние и суммы по столбцам и строкам:
colSums()colMeans()rowSums()rowMeans().
- Матричные разложения Для понимания следующих функций стоит прочесть это или здесь, по-русски и проще.
- EVD-разложение матрицы:
eigen(mx). Матрица должна быть квадратной. Для симметричной матрицы решается symmetric EVD problem, собственные вектора и собственные числа будут вещественными. Для несимметричной результат будет в общем случае комплексный. Возвращает список из вектора собственных чисел (values) и матрицы собственных векторов (vectors). Параметрsymmetric = TRUE(по умолчанию, FALSE) заставляет решать симметричную задачу без проверки входной матрицы на симметричность. С установленным параметромonly.values = TRUEфункция работает чуть быстрее, но возвращает только собственные значения. - QR-разложение QR decomposition:
qr(mx). Матрица должна быть квадратной. На выходе --- QR-разложение в запакованном виде, если нужно получить отдельно Q или R:qr.dec <- qr(A); qr.Q(qr.dec); qr.R(qr.dec) - SVD-разложение Singular value decomposition:
svd(mx). - Разложение Холецкого: Cholesky decomposition:
chol(mx). Матрица должна быть квадратной и симметричной.