Введение в R версия 3.5.2 (2018-12-20). Заметки по R: среда программирования для анализа данных и графики. У. Н. Венэбльз
Чтение книги онлайн.

Читать онлайн книгу Введение в R версия 3.5.2 (2018-12-20). Заметки по R: среда программирования для анализа данных и графики - У. Н. Венэбльз страница 13

СКАЧАТЬ произведения, конечно, некоммутативен. Определение Ваших собственных функций R рассмотрим далее в Главе 10 [написание собственных функций].

      Пример: детерминанты с одноразрядными матрицами 2*2

      В качестве искусственного, но милого примера, рассмотрим детерминанты матриц [a; b; c; d], где каждый вход – неотрицательное целое число в диапазоне 0; 1;..; 9, которые являются цифрой.

      Задача состоит в том, чтобы найти детерминанты ad-bc всех возможных матриц этой формы и представлять частоту, с которой каждое значение имеет место в рисунке высокой плотности. Это количество находится в распределении вероятностей детерминанта, если каждая цифра выбрана независимо и гарантировано случайно.

      Аккуратный способ сделать это состоит в двукратном использовании функции outer ():

      > d <– outer (0:9, 0:9)

      > fr <– table (outer (d, d, "-»))

      > plot (fr, xlab=«Determinant», ylab=«Frequency»)

      Заметьте, что здесь plot () использует гистограмму как метод рисунка, потому что он «видит», что fr имеет класс «таблица». «Очевидный» способ решить эту задачу с циклом for обсуждается в Главе 9 [Циклы и условное выполнение], что является как неэффективным, так и непрактичным.

      Также, возможно, удивительно, что приблизительно 1 из 20 матриц сингулярная.

      5.6. Обобщенное транспонирование массива

      Можно использовать функцию aperm (a, perm) для перестановки массива a. Параметром perm должна быть перестановка целых чисел {1, …., к}, где k является номером нижних индексов в a. Результат функции – массив того же самого размера как a, но со старой размерностью, вычисленной perm [j], становящейся новой j-й размерностью. Самый простой способ понимания этой операции – это обобщение транспонирования для матриц. Действительно, если A – матрица, (то есть, вдвойне преобразованный в нижний индекс массив) тогда B вычисляется путем:

      > B <-aperm (A, c (2,1))

      и представляет собой транспонирование. Для этого особого случая доступна более простая функция t (), таким образом, возможно, использовать B <-t (A).

      5.7. Матричные инструменты

      Как отмечено выше, матрица – это массив с двумя нижними индексами. Однако это такой важный особый случай, что нуждается в отдельном обсуждении. R содержит много операторов и функций, которые доступны только для матриц. Например, t (X) – функция транспонирующая матрицу, как отмечено выше. Функции nrow (A) и ncol (A) дают число строк и столбцов в матрице соответственно.

      5.7.1. Умножение матриц

      Оператор %*% используется для умножения матриц. Матрицы n-на-1 или 1-на-n могут, конечно, использоваться в качестве n-вектора, если это соответствует контексту. Наоборот, векторы, которые встречаются в выражениях умножения матриц, если возможно автоматически расширяются или на вектор строки или на вектор столбца, который является мультипликативно соответствующим (хотя это не всегда однозначно возможно, как увидим позже).

      Если, например, A и B – квадратные матрицы одинакового размера, то

      > СКАЧАТЬ