矩阵行逐渐滞后的差异

时间:2015-05-24 12:47:30

标签: r matrix

让我们假设我有以下矩阵叫做 matrix1

      [,1]      [,2]    [,3]    
 [1,] 1.5       1.5     1.5 
 [2,] 2.0       1.7     0.9
 [3,] 2.2       2.3     1.4

我想创建一个结果矩阵,如下所示:

      [,1]      [,2]    [,3]    
 [1,] 0         0       0 
 [2,] 0.5       0.2    -0.6
 [3,] 0.2       0.6     0.5 

其中

result[2, ] = matrix1[2, ] - matrix1[1, ]  
result[3, ] = matrix1[3, ] - matrix1[2, ]
...

并且第1行设置为等于0

任何人都有代码进行此操作吗?

此致

1 个答案:

答案 0 :(得分:5)

如果m是您的矩阵,请尝试:

rbind(0, diff(m))

#     [,1] [,2] [,3]
#[1,]  0.0  0.0  0.0
#[2,]  0.5  0.2 -0.6
#[3,]  0.2  0.6  0.5

另一种解决方案 - 实际上是diff的分解:

rbind(0, tail(m,-1) - head(m,-1))
#     [,1] [,2] [,3]
#      0.0  0.0  0.0
#[2,]  0.5  0.2 -0.6
#[3,]  0.2  0.6  0.5