2014-02-25 30 views
3

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

感谢。

回答

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 
+0

是的,这是完全正确的。 – rrbest