Введение в R версия 3.5.2 (2018-12-20). Заметки по R: среда программирования для анализа данных и графики. У. Н. Венэбльз
Читать онлайн книгу.нерегулярной коллекции элементов в массиве, либо в извлечении нерегулярной коллекции как вектора.
Пример матрицы ясно дает понять процесс. В случае вдвойне индексированного массива индексная матрица может состоять из двух столбцов и так много строк как требуется. Входы в индексной матрице – строка и индексы столбца для вдвойне индексированного массива. Предположим, например, что у нас есть массив X 4-на-5, и хотим сделать следующее:
– извлечь элементы X [1,3], X [2,2] и X [3,1] как векторную структуру, и
– заменить эти записи в массиве X нулями.
В этом случае необходим массив нижнего индекса 3-на-2, как в следующем примере.
> x <– array (1:20, dim=c (4,5)) # генерирует массив 4 на 5.
> x
Пример массива 4 на 5
> i <– array (c (1:3,3:1), dim=c (3,2))
> i # i является индексным массивом 3 на 2
Использование индексного массива
> x [i] <– 0 # Заменяет те элементы нулями.
> x
Групповая замена
Отрицательные индексы не разрешены при индексировании матрицы. Разрешены NA и нулевое значение: строки в индексной матрице, содержащей нуль, игнорируются, и строки, содержащие NA, производят NA в результате.
Как менее тривиальный пример, предположим, что необходимо генерировать (не приведенную) матрицу проекта для блочной конструкции, определенной блоками факторов (b уровни) и варианты (v уровни). Далее предположим, что в эксперименте есть n рисунков. Можно продолжить следующим образом:
> Xb <– matrix (0, n, b)
> Xv <– matrix (0, n, v)
> ib <– cbind (1:n, blocks)
> iv <– cbind (1:n, varieties)
> Xb [ib] <– 1
> Xv [iv] <– 1
> X <– cbind (Xb, Xv)
Для конструирования индексов матрицы, скажем N, можно использовать:
> N <– crossprod (Xb, Xv)
Однако более простым способом создания этой матрицы является использование table ():
> N <– table (blocks, varieties)
Индексная матрица должна быть числовой: предоставленная любая другая форма матрицы (логическая или символьная) обрабатывается как индексный вектор.
5.4. Функция array ()
Так же, как давая векторной структуре атрибут dim, массивы могут быть созданы из векторов функцией массива array, у которой есть форма:
> Z <– array (data_vector, dim_vector)
Например, если вектор h содержит 24 или менее чисел, тогда команда:
> Z <– array (h, dim=c (3,4,2))
использовал бы h для создания массива Z размером 3-на-4-на-2. Если размер h точно 24, то результат выглядит так:
> Z <– h; dim (Z) <– c (3,4,2)
Однако, если h меньше, чем 24, его значения будут взяты циклически для дополнения до размера 24 (см. Раздел 5.4.1 [Правило рецикличности]), и dim (h) <-c (3,4,2) сигнализировал бы ошибку о несоответствии длине. Как экстремальный, но типичный пример:
> Z <– array (0, c (3,4,2))
делает