сигнализировал бы ошибку о несоответствии длине. Как экстремальный, но типичный пример:
> Z <– array (0, c (3,4,2))
делает Z массивом всех нулей.
В этой месте dim (Z) обозначает вектор размерности c (3,4,2), и Z [1:24] содержит вектора данных, как это было в h, и Z [] с пустым нижним индексом или Z без нижнего индекса поддерживает весь массив в качестве массива.
Массивы могут использоваться в арифметических выражениях, и результат является массивом, сформированным поэлементно операциями на векторах данных. Атрибуты dim операндов обычно должны быть одинаковыми, и они становятся вектором размерности результата. Так, если все A, B и C являются подобными массивами, то:
делает D подобным массивом с его вектором данных, являющимся результатом данной поэлементно операции. Однако точное правило относительно смешанного массива и векторных вычислений нужно рассмотреть немного более тщательно.
5.4.1. Смешанный вектор и арифметика массива. Правило рецикличности
Точное правило, влияющее поэлементно на смешанные вычисления с векторами и массивами, является более изощренными и точно описаны в ссылках. Из опыта найдено следующее надежное руководство.
– Выражение просматривается слева направо.
– Любые короткие векторные операнды расширяются циклически их значениями, пока они не совпадет с размером любых других операндов.
– Если длинные и короткие вектора с массивами лишь пересчитываются, то все массивы должны иметь одинаковый атрибут dim или будет выдана ошибка.
– Любой векторный операнд более длинный, чем операнд матрицы или массива, генерирует ошибку.
– Если имеются структуры массива, и нет ошибок, или приведение к вектору было выполнено, то результат – структура массива с общим атрибутом dim ее операндов массива.
5.5. Внешнее произведение двух массивов
Важной операуцией на массивах является внешнее произведение. Если a и b – два числовых массива, их внешнее произведение – массив, вектор размерности которого получен, связывая их два вектора размерности (порядок важен), и чей вектор данных получен путем формирования всех возможных произведений элементов вектора а с соответствующим элементами вектора b. Внешнее произведение выполняется специальным оператором %o%:
Альтернатива
> ab <– outer (a, b, «*»)
Функция умножения может быть заменена произвольной функцией двух переменных. Например, если необходимо оценить функцию