我有一个矩阵
A <- matrix(1:16, nrow = 4, ncol = 4, Byrow = FALSE)我想要矩阵A的逐行差分,即A的第一行和第二行之间的元素差,A的第二行和第三行之间的元素差,等等。由于A∈R4×4,因此得到的矩阵应该包含维度为3×4的行差分。
我不想使用for循环遍历A的行并求连续行之间的差值,而是使用离散差分运算符来加速操作。我使用sapply()构造这个矩阵差分运算符B,然后使用B×A计算逐行差分。
比方说矩阵B∈R3×4
B <- matrix(c( -1, 1, 0, 0,
0, -1, 1, 0,
0, 0, -1, 1), nrow = 3, ncol = 4, byrow = TRUE)预期输出为全为1的矩阵C∈R3×4。
Result_C <- matrix(c( 1, 1, 1, 1,
1, 1, 1, 1,
1, 1, 1, 1), nrow = 3, ncol = 4, byrow = TRUE)我应该如何继续?R中矩阵的差分算子是什么?
发布于 2020-03-26 07:30:01
我们可以使用diff来计算行之间的差异
diff(A)
# [,1] [,2] [,3] [,4]
#[1,] 1 1 1 1
#[2,] 1 1 1 1
#[3,] 1 1 1 1发布于 2020-03-26 07:48:45
您可以寻址到矩阵的完整列或行
A <- matrix(1:16, nrow = 4, ncol = 4)
A[2:(nrow(A)),]-A[1:(nrow(A)-1),]是的,diff(A)在这里也应该做同样的事情
https://stackoverflow.com/questions/60858891
复制相似问题