Сравнение двух матриц (A & B) и вывод новой матрицы C с cij = min (aij, bij)

r

1964 просмотра

2 ответа

Название довольно ясно, но я пытаюсь взять две матрицы, A и B, и вывести матрицу C, которая имеет минимальные элементы из этих двух матриц.

cij = min (aij, bij)

Вот как я собираюсь сделать это следующим образом:

C <- matrix(ncol = ncol(A), nrow = nrow(A), 0)
for (i in 1:ncol(C)) {
    Y <- rbind(A[i,], B[i,])
    C[i,] <- apply(Y, 2, min)
}

Тем не менее, я надеялся, что это может быть векторизовано, но я не могу думать, как это сделать. Я ничего не нашел, поэтому, если у кого-то есть идеи, я буду очень признателен.

Спасибо!

Автор: Michael LeVine Источник Размещён: 12.11.2019 09:38

Ответы (2)


12 плюса

Смотрите ?pmin(параллельный минимум):

R> A <- matrix(1:4, 2, 2)
R> B <- matrix(c(5, 1, 1, 6), 2, 2)
R> A
     [,1] [,2]
[1,]    1    3
[2,]    2    4
R> B
     [,1] [,2]
[1,]    5    1
[2,]    1    6
R> pmin(A, B)
     [,1] [,2]
[1,]    1    1
[2,]    1    4
Автор: rcs Размещён: 18.01.2013 03:29

0 плюса

Пытаться

C <- A
C[A>B] <- B[A>B]

Это не так просто, но сработает. Демонстрация:

> A <- matrix(1:4, 2, 2)
> B <- matrix(c(5, 1, 1, 6), 2, 2)
> C <- A
> C[A>B] <- B[A>B]
> 
> A
     [,1] [,2]
[1,]    1    3
[2,]    2    4
> B
     [,1] [,2]
[1,]    5    1
[2,]    1    6
> C
     [,1] [,2]
[1,]    1    1
[2,]    1    4
Автор: Richard Hardy Размещён: 16.06.2017 11:52
Вопросы из категории :
32x32