Замена значений в матрице: в каждой строке максимальное значение с минимальным значением - PullRequest
0 голосов
/ 28 апреля 2018

Я не могу решить эту проблему, я только начинаю учить R. Спасибо за помощь:

(e) В каждой строке матрицы замените максимальное значение на минимальное.

1 Ответ

0 голосов
/ 28 апреля 2018

Мы можем использовать 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...