Вывод
x %% 3==0
# A B C
#X FALSE FALSE FALSE
#Y FALSE FALSE FALSE
#Z TRUE TRUE TRUE
представляет собой логическую матрицу
Поднабор исходной матрицы с использованием логической матрицы дает элементы, основанные на позиции TRUE
which(x%%3 == 0)
#[1] 3 6 9
Это те же значения в matrix
, которые мы получили при извлечении, и это не делает различий между строками, например
x > 3
# A B C
#X FALSE TRUE TRUE
#Y FALSE TRUE TRUE
#Z FALSE TRUE TRUE
x[x > 3]
#[1] 4 5 6 7 8 9
Чтобы извлечь строку как таковую, нам может потребоваться получитьлогический векторОдин из вариантов - rowSums
и сравнение с количеством столбцов
x[rowSums(x %%3 == 0) == ncol(x),, drop = FALSE]
# A B C
#Z 3 6 9
data
x <- matrix(1:9, nrow = 3, dimnames = list(c("X","Y","Z"), c("A","B","C")))