Мы можем использовать apply
для циклического перемещения по строкам (MARGIN = 1
) и replace
значения, которые max
с min
этой строки
t(apply(m1, 1, function(x) replace(x, x== max(x), min(x))))
Или используйте индексирование строк / столбцов, чтобы присвоить элементам максимум для каждой строки минимуму для каждой строки
library(matrixStats)
m1[cbind(seq_len(nrow(m1)), max.col(m1))] <- rowMins(m1)
Или используя только base R
m1[cbind(seq_len(nrow(m1)), max.col(m1))] <- m1[cbind(seq_len(nrow(m1)), max.col(-m1))]
данные
set.seed(24)
m1 <- matrix(rnorm(5* 10), 5, 10)