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