切断矩阵中“ n”以下的所有数字

时间:2018-12-19 14:25:16

标签: r matrix

R刚起步。我想做的是将矩阵中的所有数字都说成5及以下。例如,如果矩阵是这样的:

1 3 2 5 7
3 8 3 6 2

我想加入:

1 3 2 5 5
3 5 3 5 2

我觉得必须有比每次手动完成更有效的方法。任何帮助,将不胜感激。

2 个答案:

答案 0 :(得分:6)

是的,你可以

mat[mat > 5] <- 5 


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

@Gregor拥有最聪明的解决方案,但只要为您提供更多选择,您就可以做到

ifelse(mat > 5, 5, mat)

或者如@Sotos所述

replace(mat, mat > 5, 5)

答案 1 :(得分:4)

使用pminpmax可以很容易地执行元素级的最小值或最大值。在这种情况下,将矩阵中的内容与5比较时,您需要最小值。

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

p 表示 parallel ,表示比较是逐元素进行的。 min()max()当然会给出全局最小值/最大值,只是一个结果。 pmin / pmax通常适用于两个长度相等的向量。在这里,我们利用“回收”的优势,输入5会自动扩展(“回收”)以具有与输入相同的长度。