Обрежьте все числа ниже "n" в матрице - PullRequest
0 голосов
/ 19 декабря 2018

Совершенно новый для R. То, что я пытаюсь сделать, это сделать все числа в матрице, скажем, 5 и ниже.Например, если матрица выглядит следующим образом:

1 3 2 5 7
3 8 3 6 2

Я бы хотел превратить ее в:

1 3 2 5 5
3 5 3 5 2

Мне кажется, что должен быть более эффективный способ, чем сделать это путемрука каждый раз.Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Обеспечение минимального или максимального значения для элемента легко с pmin или pmax.В этом случае вы хотите получить минимум при сравнении того, что находится в вашей матрице, с 5.

pmin(m1, 5)
#     V1 V2 V3 V4 V5
#[1,]  1  3  2  5  5
#[2,]  3  5  3  5  2

p означает параллельный , указывая, что сравнение является элементом-wise.min() или max(), конечно, дают глобальный минимум / максимум, только один результат.pmin / pmax обычно используются для двух векторов одинаковой длины.Здесь мы используем «переработку», вход 5 автоматически расширяется («перерабатывается»), чтобы иметь ту же длину, что и вход.

0 голосов
/ 19 декабря 2018

Да, вы можете сделать

mat[mat > 5] <- 5 


#     V1 V2 V3 V4 V5
#[1,]  1  3  2  5  5
#[2,]  3  5  3  5  2

@ У Грегора есть самое умное решение, но просто чтобы дать вам больше возможностей, вы можете сделать

ifelse(mat > 5, 5, mat)

Или как @Сотос упоминается

replace(mat, mat > 5, 5)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...