Можно было бы данный раздел назвать по-другому: проверка выполнения условий для всех элементов матрицы и проверка выполнения условий хотя бы для одного элемента матрицы.
Задание 2. Для матрицы E выяснить
a) Все ли её значения положительны?
b) Есть ли у неё положительные значения?
Решение. Для ответа на эти вопросы в общем случае нам понадобятся операторы: all(…) и any(…). Чтобы понять различия в этих логических операциях, составим проверку условия положительности для каждого элемента матрицы:
E > 0 # Проверяем каждый элемент матрицы E на положительность
с результатом в окне консоли:
> E > 0 # Проверяем каждый элемент матрицы E на положительность
[,1] [,2]
[1,] TRUE FALSE
[2,] FALSE TRUE
Нетрудно видеть, что не все элементы матрицы E строго положительны, хотя имеются и такие. Так что, ответ на первый вопрос: FALSE, а на второй – TRUE.
Однако на практике матрица может быть настолько больших размеров, что вывести на экран результат для каждого её элемента не представляется возможным. Здесь как раз и будет уместно использовать специальные логические операторы all(…) и any(…). Поcмотрите, как элегантно выглядят в коде ответы на наши два вопроса:
all(E > 0) # Ответ на вопрос: для всех ли элементов матрицы E выполнено условие?
any(E > 0) # Ответ на вопрос: выполнено ли условие хотя бы для одного элемента?
с тем же результатом:
> all(E > 0) # Ответ на вопрос: для всех ли элементов матрицы E выполнено условие?
[1] FALSE
> any(E > 0) # Ответ на вопрос: выполнено ли условие хотя бы для одного элемента?
[1] TRUE
Транспонирование матриц
Задание 3. Найти транспонированную матрицу .
Решение. Более простой по семантике операции в R не существует:
t(S) # Транспонирование матрицы S
> t(S) # Транспонирование матрицы S [,1] [,2] [,3]V1 1 -6 1V2 -2 4 8V3 0 2 -11V4 2 -3 6V5 5 0 8V6 3 0 9