在R中的矩阵中按行获取最大值

时间:2014-02-25 06:22:49

标签: r

我正在尝试创建对某个时间点观察到的最大值的引用。这是一个可以实现我想做的事情的例子。每行都单独处理。我已经考虑了对行和列应用的一些组合,但我希望能够在不使用循环的情况下立即为整个矩阵计算它。

说我有一个矩阵

1, 2, 3, 2, 2, 5, 4, 5, 7

2, 3, 3, 4, 2, 3, 5, 4, 6

我想创建一个看起来像这样的新矩阵

1, 2, 3, 3, 3, 5, 5, 5, 7

2, 3, 3, 4, 4, 4, 5, 5, 6

感谢。

1 个答案:

答案 0 :(得分:4)

cummax或累积最大值是您所需要的:

dat <- as.matrix(read.csv(text="
1, 2, 3, 2, 2, 5, 4, 5, 7
2, 3, 3, 4, 2, 3, 5, 4, 6",
header=FALSE))

dat
#     V1 V2 V3 V4 V5 V6 V7 V8 V9
#[1,]  1  2  3  2  2  5  4  5  7
#[2,]  2  3  3  4  2  3  5  4  6

t(apply(dat,1,cummax))

#     V1 V2 V3 V4 V5 V6 V7 V8 V9
#[1,]  1  2  3  3  3  5  5  5  7
#[2,]  2  3  3  4  4  4  5  5  6