R код для создания матрицы с меньшим значением - PullRequest
0 голосов
/ 31 октября 2018

Я только что изучил R и получил задание, касающееся создания матрицы, содержащей столбец со всеми значениями, меньшими 6, с использованием apply и all.

Итак, вот код для вывода матрицы

A<-matrix(c(1, 5, 5, 0, 5, 6, 3, 0, 3), nrow = 3, ncol = 3, byrow = TRUE, 
         dimnames = list(c("Row-1", "Row-2", "Row-3"), 
                         c("Column 1", "Column 2", "Column 3")))

Но тогда как я собираюсь вызывать значения, меньшие в 6 Затем примените функцию, которую я использовал следующим образом

apply(A, 2, A<6)

1 Ответ

0 голосов
/ 31 октября 2018

Вот один вариант без apply.

A[, colSums(A < 6) == nrow(A)]
#      Column 1 Column 2
#Row-1        1        5
#Row-2        0        5
#Row-3        3        0

* 1006 объяснений *

Первым шагом является создание логической матрицы, которая присваивает TRUE всем значениям <6 </p>

A < 6
#      Column 1 Column 2 Column 3
#Row-1     TRUE     TRUE     TRUE
#Row-2     TRUE     TRUE    FALSE
#Row-3     TRUE     TRUE     TRUE

Мы используем эту матрицу и вычисляем сумму каждого столбца (TRUE равно 1, FALSE равно 0). Возвращает именованный вектор.

colSums(A < 6)
#Column 1 Column 2 Column 3 
#       3        3        2

Вы ищете столбцы, в которых все значения меньше 6, поэтому нам нужно проверить, равна ли сумма в каждом столбце количеству строк в вашей матрице.

colSums(A < 6) == nrow(A)
#Column 1 Column 2 Column 3 
#    TRUE     TRUE    FALSE

Этот логический вектор затем используется для подмножества ваших столбцов.

A[, colSums(A < 6) == nrow(A)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...