Найти максимальное и минимальное значение каждого столбца, а затем найти максимальное и минимальное значение каждой строки

Я'ве получил эту матрицу:

a <- matrix(rnorm(1000 * 18, mean = 100, sd = sqrt(10)), 1000, 18)

Я хочу найти максимальное и минимальное значение в каждом столбце и максимальное и минимальное значение каждой строки.

Решение

Выяснил это.

Минимум и максимум каждого столбца:

apply(a,2,min)
apply(a,2,max)

Минимальное и максимальное значение каждой строки:

apply(a,1,min)
apply(a,1,max)

Нашел информацию здесь http://www.personality-project.org/r/r.commands.html

Комментарии (0)

Посмотреть пакет matrixStats. Вы можете использовать colMins(), `rowMaxs и функции () так как для столбцов и строк.

См. Этот ответ: https://stackoverflow.com/questions/24212739/how-to-find-the-highest-value-of-a-column-in-a-data-frame-in-r/39750306#39750306

Комментарии (0)

Вы можете попробовать

apply(a, 1, range)

Используя это вместе с "т", это дает вам две колонны. Первый с минимальным второй с максимальным строк.

head(t(apply(a, 1, range)))
         [,1]     [,2]
[1,] 95.75922 103.6956
[2,] 93.62636 106.3934
[3,] 92.70567 106.9190
[4,] 96.53577 104.4971
[5,] 96.61573 107.6691
[6,] 95.56239 105.5887
Комментарии (0)

Более быструю альтернативу подряд макс/мин использовал бы рмакс() и рміп() хотя вы бы сначала преобразовать матрицу в список (сведения.рама-это частный случай списка):

apply(a,1,min)
apply(a,1,max)
# becomes
do.call(pmin, as.data.frame(a))
do.call(pmax, as.data.frame(a))

Для столбцов оно будет меньше, то "низким" и из-за того, чтобы перенести в первую очередь:

apply(a,2,min)
apply(a,2,max)
# becomes
do.call(pmin, as.data.frame(t(a)))
do.call(pmin, as.data.frame(t(a)))

Бенчмаркинг:


a 
Комментарии (1)