矩阵行逐渐滞后的差异

And*_*eas 2 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
Run Code Online (Sandbox Code Playgroud)

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

      [,1]      [,2]    [,3]    
 [1,] 0         0       0 
 [2,] 0.5       0.2    -0.6
 [3,] 0.2       0.6     0.5 
Run Code Online (Sandbox Code Playgroud)

哪里

result[2, ] = matrix1[2, ] - matrix1[1, ]  
result[3, ] = matrix1[3, ] - matrix1[2, ]
...
Run Code Online (Sandbox Code Playgroud)

并且第1行设置为0

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

问候

Col*_*vel 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
Run Code Online (Sandbox Code Playgroud)

另一个解决方案 - 实际上是一个分解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
Run Code Online (Sandbox Code Playgroud)